Java_浅谈集合中自定义元素排序方式
2014-07-13 19:49
417 查看
1.当集合定义的是HashSet类型时,元素类中要重写的方法有两个,分别是public int hashCode()和public boolean equals(Object obj),这两个方法用于保证元素唯一性。
如下所示:
class Student{
private String name;
private int age;
Student(String name,int age){
this.name=name;
this.age=age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public int hashCode(){
return name.hashCode()+age*34;
}
public boolean equals(Object obj){
if(!(obj instanceof Student)){
throw new ClassCastException("类型不匹配");
}
Student stu=(Student)obj;
return this.name.equals(stu.name)&&this.age==stu.age;
}
}
注意:HashSet中元素是无序的,哈希表是无序的。
2.当HashSet集合元素可能用于二叉树集合时,要实现Comparable接口进行默认的排序。代码示例如下:
class Student implements Comparable<Student>{
private String name;
private int age;
Student(String name,int age){
this.name=name;
this.age=age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public int hashCode(){
return name.hashCode()+age*34;
}
public boolean equals(Object obj){
if(!(obj instanceof Student)){
throw new ClassCastException("类型不匹配");
}
Student stu=(Student)obj;
return this.name.equals(stu.name)&&this.age==stu.age;
}
public int compareTo(Student stu){
int num=new Integer(age).compareTo(new Integer(stu.age));
if(num==0){
return name.compareTo(stu.name);
}
return num;
}
}
也就是说,基于二叉树数据结构的集合元素类可以通过实现Comparable接口,复写public int compareTo(Object obj)方法来完成默认排序的功能。
更多内容更新,待续。。。。。
如下所示:
class Student{
private String name;
private int age;
Student(String name,int age){
this.name=name;
this.age=age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public int hashCode(){
return name.hashCode()+age*34;
}
public boolean equals(Object obj){
if(!(obj instanceof Student)){
throw new ClassCastException("类型不匹配");
}
Student stu=(Student)obj;
return this.name.equals(stu.name)&&this.age==stu.age;
}
}
注意:HashSet中元素是无序的,哈希表是无序的。
2.当HashSet集合元素可能用于二叉树集合时,要实现Comparable接口进行默认的排序。代码示例如下:
class Student implements Comparable<Student>{
private String name;
private int age;
Student(String name,int age){
this.name=name;
this.age=age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public int hashCode(){
return name.hashCode()+age*34;
}
public boolean equals(Object obj){
if(!(obj instanceof Student)){
throw new ClassCastException("类型不匹配");
}
Student stu=(Student)obj;
return this.name.equals(stu.name)&&this.age==stu.age;
}
public int compareTo(Student stu){
int num=new Integer(age).compareTo(new Integer(stu.age));
if(num==0){
return name.compareTo(stu.name);
}
return num;
}
}
也就是说,基于二叉树数据结构的集合元素类可以通过实现Comparable接口,复写public int compareTo(Object obj)方法来完成默认排序的功能。
更多内容更新,待续。。。。。
相关文章推荐
- java基础—自定义一个比较器,对TreeSet 集合中的元素按指定方法来排序(java集合六)
- Java 数序和集合框架的转化 & Collection.sort()方法排序的两种方式
- Java集合和数组的排序方式总结
- Java基础知识强化之集合框架笔记45:Set集合之TreeSet存储自定义对象并遍历练习1(自然排序)
- 浅谈java中的TreeSet中的排序方式
- Java集合和数组的排序方式总结
- java编程排序之自定义类型的集合,按业务需求排序
- 黑马程序员------TreeSet集合框架存储自定义元素之排序Comparable与Comparator
- Java基础知识强化之集合框架笔记46:Set集合之TreeSet存储自定义对象并遍历练习2(自然排序)
- java集合TreeSet的两种排序方式
- Java 往TreeSet集合中存储自定义对象学生,按照学生的年龄进行排序。
- java:集合的自定义多重排序
- Java集合和数组的排序方式总结
- Java中的对List中元素进行自定义排序
- Java基础知识强化之集合框架笔记47:Set集合之TreeSet保证元素唯一性和比较器排序的原理及代码实现(比较器排序)
- 黑马程序员——java集合元素排序存储操作
- Java集合和数组的排序方式总结
- Java自定义对象数组、集合排序
- Java集合和数组的排序方式总结
- 集合中自定义对象排序的两种方式