TreeSet集合存放自定义类型的对象,可以使用比较器,实现Comparable接口自己设置排序方式
2016-10-26 17:34
921 查看
TreeSet集合
* 其中的元素按照自然顺序进行排序的
* 注意:在此类集合中,只能存放同一类型的元素
* 如果集合中的元素为自定义类型的对象,有以下两种方式可以自己设置排序方式:
* 1.自定义的类必须实现java.lang.Comparable接口,并且实现其中的抽象方法
* 2.根据自定义类写一个比较器的类,该比较器必须实现java.util.Comparator接口,并且实现接口的抽象方法,在创建TreeSet对象时,将比较器对象传入。
第一种:
实现Comparable接口,实现compareTo(Object o) 方法
@Override
public int compareTo(Object o) {
if(o instanceof Person){
Person p=(Person) o;
if(this.age<p.age){
return -1;
}else if(this.age>p.age){
return 1;
}else{
return 0;
}
}
return 0;
}
实现的抽象方法compareTo在TreeSet集合放入类对象时被调用,并且是放入的类对象跟集合前面的类对象比较。即this指当前类对象,Object o指前面的那些对象。所以此处是正序排列,当前对象的属性值大时返回为正数。
第二种:
写一个比较器的类实现java.util.Comparator接口,实现compare(Object o1, Object o2) 方法
@Override
public int compare(Object o1, Object o2) {
if(o1 instanceof Student && o2 instanceof Student){
Student s1=(Student)o1;
Student s2=(Student)o2;
int id = s1.getStuId()-s2.getStuId();
//当前对象减参数对象返回值,是从小到大
return id;
}
return 0;
}
*o1相等于java.lang.comparable接口中的conparaTo()方法的当前对象
*o2相等于 java.lang.comparable接口中的conparaTo()方法的参数对象
此比较器排序为正序
* 其中的元素按照自然顺序进行排序的
* 注意:在此类集合中,只能存放同一类型的元素
* 如果集合中的元素为自定义类型的对象,有以下两种方式可以自己设置排序方式:
* 1.自定义的类必须实现java.lang.Comparable接口,并且实现其中的抽象方法
* 2.根据自定义类写一个比较器的类,该比较器必须实现java.util.Comparator接口,并且实现接口的抽象方法,在创建TreeSet对象时,将比较器对象传入。
第一种:
实现Comparable接口,实现compareTo(Object o) 方法
@Override
public int compareTo(Object o) {
if(o instanceof Person){
Person p=(Person) o;
if(this.age<p.age){
return -1;
}else if(this.age>p.age){
return 1;
}else{
return 0;
}
}
return 0;
}
实现的抽象方法compareTo在TreeSet集合放入类对象时被调用,并且是放入的类对象跟集合前面的类对象比较。即this指当前类对象,Object o指前面的那些对象。所以此处是正序排列,当前对象的属性值大时返回为正数。
第二种:
写一个比较器的类实现java.util.Comparator接口,实现compare(Object o1, Object o2) 方法
@Override
public int compare(Object o1, Object o2) {
if(o1 instanceof Student && o2 instanceof Student){
Student s1=(Student)o1;
Student s2=(Student)o2;
int id = s1.getStuId()-s2.getStuId();
//当前对象减参数对象返回值,是从小到大
return id;
}
return 0;
}
*o1相等于java.lang.comparable接口中的conparaTo()方法的当前对象
*o2相等于 java.lang.comparable接口中的conparaTo()方法的参数对象
此比较器排序为正序
相关文章推荐
- 使用Comparable、Comparator接口实现对对象数组、List集合自定义排序
- 比较器的使用,实现 Comparable接口,功能:实现对象的多条件比较,排序
- 实现比较器接口IComparable<T>,让自定义类型数组也能排序
- 实现Comparable接口对存放自定义对象列表(数组)进行排序
- (68)TreeSet练习:两种排序方式:自然排序(实现comparable接口)、比较器
- 对于集合中的自定义对象使用collections.sort 进行排序,需要实现compartor接口
- 使用 Comparable 接口实现对象的属性排序
- 对对象数组与存放对象数据的集合进行排序 —— Comparable接口的用法
- 通过实现Comparable接口结合TreeSet来对对象自动排序
- java 集合(5) 类对象排序 / 类实现Comparable 接口 / 调用Collections 类sort()
- JAVA中Arrays.sort()使用两种方式(Comparable和Comparator接口)对对象或者引用进行排序
- 通过实现Comparable接口结合TreeSet来对对象自动排序
- TreeSet集合排序两种实现方式Comparable和Comparator比较
- TreeSet集合排序两种实现方式Comparable和Comparator比较
- JAVA中Arrays.sort()使用两种方式(Comparable和Comparator接口)对对象或者引用进行排序
- TreeSet是可以对字符串进行排序 的, 因为字符串已经实现了Comparable接口。
- JAVA中Arrays.sort()使用两种方式(Comparable和Comparator接口)对对象或者引用进行排序
- 用TreeSet存储自定义对象1(实现Comparable接口)
- ArrayList和LinkedList都是实现了List接口的类,他们都是元素的容器,用于存放对象的引用; 他们都可以对存放的元素进行增删改查的操作,还可以进行排序。 但是,他们还是有区别的。
- TreeSet集合排序两种实现方式Comparable和Comparator比较