TreeSet的两种排序方法

简介:

TreeSet的两种排序方法:自然排序和定义比较器,推荐使用定义比较器方法。

[java]  view plain  copy
 print ?
  1. <span style="color:#333333;">import java.util.*;  
  2. class treeset   
  3. {  
  4.     public static void main(String[] args)   
  5.     {  
  6.         TreeSet t = new TreeSet();  
  7. //      TreeSet t = new TreeSet(new mycomparator());//第二种方法定义  
  8.         t.add(new student("a1",18));  
  9.         t.add(new student("a2",18));  
  10.         t.add(new student("a1",18));  
  11.         t.add(new student("a3",16));  
  12.         t.add(new student("a4",25));  
  13.   
  14.         for(Iterator it = t.iterator();it.hasNext();)  
  15.         {  
  16.             student s = (student)it.next();  
  17.             sop(s.getName()+","+s.getAge());  
  18.         }  
  19.     }  
  20.     public static void sop(Object obj)  
  21.     {  
  22.         System.out.println(obj);  
  23.     }  
  24. }  
  25.   
  26. /* 
  27. 自然排序法 定义Comparable接口,覆盖CompareTo方法 
  28. */  
  29. class student implements Comparable  
  30. {  
  31.     private String name;  
  32.     private int age;  
  33.     student(String name,int age)  
  34.     {  
  35.         this.name = name;  
  36.         this.age = age;  
  37.     }  
  38.     public int compareTo(Object obj)  
  39.     {  
  40.         if(!(obj instanceof student))  
  41.             throw new RuntimeException("不是学生");  
  42.         student s = (student)obj;  
  43.         if(this.age>s.age)  
  44.             return 1;  
  45.         if(this.age==s.age)  
  46.             return this.name.compareTo(s.name);  
  47.         return -1;  
  48.   
  49.     }  
  50.     public String getName()  
  51.     {  
  52.         return name;  
  53.     }  
  54.     public int getAge()  
  55.     {  
  56.         return age;  
  57.     }  
  58. }  
  59.   
  60. /* 
  61. 定义比较器   当两种方法都存在时,以比较器为主。 
  62. 定义一个类,实现Comparator接口,覆盖compare方法 
  63. */  
  64. class mycomparator implements Comparator  
  65. {  
  66.     public int compare(Object o1,Object o2)  
  67.     {  
  68.         student s1 = (student)o1;  
  69.         student s2 = (student)o2;  
  70.   
  71.         int num = s1.getName().compareTo(s2.getName());  
  72.         if(num ==0)  
  73.         {  
  74.             if(s1.getAge()>s2.getAge())  
  75.                 return 1;  
  76.             if(s1.getAge()==s2.getAge())  
  77.                 return 0;  
  78.             return -1;  
  79.         }  
  80.         return num;  
  81.     }  
  82. }</span>  


转载:http://blog.csdn.net/chaoyu168/article/details/49339771

目录
相关文章
|
7月前
TreeMap的排序
TreeMap的排序
40 0
|
3月前
|
存储 算法 搜索推荐
排序方法8大总结
排序方法8大总结
|
8月前
TreeSet集合
TreeSet集合
28 0
|
10月前
TreeMap实现排序
TreeMap实现排序
|
存储 安全 API
TreeSet详解
TreeSet详解
119 0
TreeSet详解
TreeSet的两种排序方式
示例: 示例公用类: public class MyDate { private int month; private int year; private int day; @Override public String toString() { return "MyDate{" + "month=" + month + ", year=" + year +
78 0
TreeSet的两种排序方式
|
存储
TreeSet相关问题
TreeSet相关问题
|
消息中间件 前端开发 JavaScript
有趣又有序的LinkedHashMap(二)
哈喽,大家好,我是指北君。 PS:最近是跳槽的高峰期,我连日加班好多天,整理出了包含16000 多道面试题的面试宝典,并且指北君也会持续更新这份面试宝典中的题目,希望它能帮助大家找到自己心仪的工作!【文末有领取方式】
有趣又有序的LinkedHashMap(二)
有趣又有序的LinkedHashMap(一)
哈喽,大家好,我是指北君。 PS:最近是跳槽的高峰期,我连日加班好多天,整理出了包含16000 多道面试题的面试宝典,并且指北君也会持续更新这份面试宝典中的题目,希望它能帮助大家找到自己心仪的工作!【文末有领取方式】
有趣又有序的LinkedHashMap(一)
|
存储 算法 Java
TreeSet类的排序问题
TreeSet支持两种排序方法:自然排序和定制排序。TreeSet默认采用自然排序。1、自然排序    TreeSet会调用集合元素的compareTo(Object obj)方法来比较元素之间大小关系,然后将集合元素按升序排列,这种方式就是自然排序。
1627 0