黑马程序员———TreeSet两种排序方式

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

TreeSet对元素进行排序的方式一: 

让元素自身具备比较功能,元素就需要实现Comparable接口,覆盖compareTo方法。
示例:
  1. import java.util.Comparator;
  2. import java.util.Iterator;
  3. import java.util.TreeSet;

  4. //创建了一个根据Person类的name进行排序的比较器。
  5. class ComparatorByName implements Comparator{
  6. public int compare(Object o1,Object o2){
  7. Person p1 = (Person)o1;
  8. Person p2 = (Person)o2;

  9. int temp = p1.getName().compareTo(p2.getName());
  10. return temp == 0?p1.getAge()-p2.getAge() : temp;
  11. }
  12. }

  13. public class TreeSetDemo{
  14. public static void main(String[] args){
  15. TreeSet ts = new TreeSet(new ComparatorByName());

  16. //以Person对象年龄进行从小到大的排序
  17. ts.add( new Person("zhangsan" ,28));
  18. ts.add( new Person("wangwu" ,23));
  19. ts.add( new Person("lisi" ,21));
  20. ts.add( new Person("zhouqi" ,29));
  21. ts.add( new Person("zhaoliu" ,25));
  22. Iterator it = ts.iterator();
  23. while(it.hasNext()){
  24. Person p = (Person)it.next();
  25. System.out.println(p.getName() + ":" + p.getAge());
  26. }
  27. }
  28. }
复制代码


TreeSet集合第二种排序方式:
让集合自身具备比较功能,定义一个类实现Comparator接口,覆盖compare方法。将该类对象作为参数传递给TreeSet集合的构造函数。
示例2:
  1. import java.util.Comparator;
  2. import java.util.Iterator;
  3. import java.util.TreeSet;
  4. public class TreeSetTest{
  5. public static void main(String[] args){
  6. TreeSet ts = new TreeSet(new ComparatorByLen());
  7. ts.add( "aaaa");
  8. ts.add( "zz");
  9. ts.add( "nbag");
  10. ts.add( "cba");
  11. ts.add( "abc");
  12. Iterator it = ts.iterator();
  13. while(it.hasNext()){
  14.         System.out.println(it.next());
  15. }
  16. }
  17. }
  18. class ComparatorByLen implements Comparator{
  19. public int compare(Object o1,Object o2){
  20. String s1 = (String)o1;
  21. String s2 = (String)o2;
  22. int temp = s1.length() - s2.length();
  23. return temp == 0?s1.compareTo(s2):temp;
  24. }
  25. }
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值