JAVA新手求教,为什么我TreeSet集合类排序后只输出了一个对象

qq_24504075 qq_24504075 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
import java.util.Comparator;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

/**
* @author kaka
*
*/
public class Test {

/**
* @param args
*/

public static void main(String[] args) {
Set<Persons> set = new TreeSet<>(new Comparator<Persons>() {

@Override
public int compare(Persons o1, Persons o2) {
// TODO 自动生成的方法存根
if (o1 == null || o2 == null) {
throw new NullPointerException();
} else if (o1.getSalary() < o2.getSalary()) {
return 1;
} else if (o1.getSalary() > o2.getSalary()) {
return -1;
} else if (o1.getSalary() == o2.getSalary()) {
if (o1.getAge() < o2.getAge()) {
return -1;
} else if (o1.getAge() > o2.getAge()) {
return 1;
} else if (o1.getSalary() == o2.getSalary()
&& o1.getAge() == o2.getAge()) {
if(o1.getName().compareTo(o2.getName())<o1.getName().compareTo(o2.getName())){
return -1;
}else if(o1.getName().compareTo(o2.getName())>o1.getName().compareTo(o2.getName())){
return 1;
}else {
return 0;
}
} else if (o1.getSalary() == o2.getSalary()
&& o1.getAge() == o2.getAge()
&& o1.getName().equals(o2.getName())) {
if (o1.getBook().getPrice() < o2.getBook().getPrice()) {
return -1;
} else if (o1.getBook().getPrice() > o2.getBook()
.getPrice()) {
return 1;
} else if (o1.getBook().getPrice() == o2.getBook()
.getPrice()) {
o1.getBook().getBookName()
.compareTo(o2.getBook().getBookName());
}
}
}
return 0;
}
});
Books book1 = new Books("水浒", 300f);
Books book2 = new Books("三国", 500f);
Books book3 = new Books("西游", 250f);
Persons person1 = new Persons("a", 30, 250f, book1);
Persons person2 = new Persons("b", 30, 250f, book2);
Persons person3 = new Persons("c", 30, 250f, book3);
set.add(person1);
set.add(person2);
set.add(person3);
Iterator<Persons> iter = set.iterator();
while (iter.hasNext()) {
Persons p = iter.next();
System.out.println(p);
}
}

}
...全文

相关推荐

Java TreeSet实现学生按年龄大小和姓名排序的方法示例

主要介绍了Java TreeSet实现学生按年龄大小和姓名排序的方法,涉及java类型转换、遍历、比较等相关操作技巧,需要的朋友可以参考下

weixin_38642897

详解Java中HashSet和TreeSet的区别

主要介绍了详解Java中HashSet和TreeSet的区别的相关资料,需要的朋友可以参考下

weixin_38625464

浅谈TreeSet中的两种排序方式

下面小编就为大家带来一篇浅谈TreeSet中的两种排序方式。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

weixin_38517904

Java集合框架总结:TreeSet类的排序问题

发布于2012-5-8TreeSet支持两种排序方法:自然排序和定制排序。TreeSet默认采用自然排序。TreeSet会调用集合元素的compareTo(Objectobj)方法来比较元素之间大小关系,然后将集合元素按升序排列,这种方式就是自然排序。(比较的前提:两个对象的类型相同)。java提供了一个Comparable接口,该接口里定义了一个compareTo(Objectobj)方法,该方法返回一个整数值,实现该接口的类必须实现该方法,实现了该接口的类的对象就可以比较大小。当一个对象调用该方法与另一个对象进行比较,例如obj1.comparTo(obj2),如果该方法返回0

weixin_38630139

浅谈java中的TreeMap 排序与TreeSet 排序

下面小编就为大家带来一篇浅谈java中的TreeMap 排序与TreeSet 排序。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

weixin_38706197
评论 2
收藏 已收藏
分享
返回顶部
qq_24504075
Java SE 62,621 成员 307,251 内容