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

目录
相关文章
|
6月前
|
存储 Java 开发者
HashSet和TreeSet教你重新认识Java集合的无序与有序
【10月更文挑战第14天】本文深入探讨了Java集合框架中的HashSet和TreeSet,解析了它们分别实现无序和有序存储的机制。通过理解HashSet基于哈希表的无序特性和TreeSet利用红黑树实现的有序性,帮助开发者更好地选择合适的集合类型以满足不同的应用场景。
102 2
|
6月前
|
存储 Java
Java集合框架中的HashSet和TreeSet,解释了它们如何分别实现无序和有序存储。
【10月更文挑战第13天】本文深入探讨了Java集合框架中的HashSet和TreeSet,解释了它们如何分别实现无序和有序存储。通过解析内部机制和示例代码,帮助读者理解这两种集合的特点和应用场景,从而更好地选择合适的集合类型满足实际需求。
64 3
|
搜索推荐 算法 Java
选择排序算法:简单但有效的排序方法
在计算机科学中,排序算法是基础且重要的主题之一。选择排序(Selection Sort)是其中一个简单但非常有用的排序算法。本文将详细介绍选择排序的原理和步骤,并提供Java语言的实现示例。
257 1
选择排序算法:简单但有效的排序方法
|
存储 搜索推荐 算法
插入排序:简单而有效的排序方法
在计算机科学中,排序算法是一个重要且常见的主题,它们用于对数据进行有序排列。插入排序(Insertion Sort)是其中一个简单但有效的排序算法。本文将详细解释插入排序的原理和步骤,并提供Java语言的实现示例。
434 4
|
10月前
|
存储 Java
打破常规!HashSet和TreeSet教你重新认识Java集合的无序与有序
【6月更文挑战第17天】Java集合框架中的Set接口,HashSet无序而TreeSet有序。HashSet基于哈希表,元素插入顺序不可预测,适合快速去重。TreeSet利用红黑树保证有序性,支持自然排序或自定义排序。若需同时无序和有序,可先用HashSet去重,再将元素加入TreeSet,但会牺牲性能。选择时依据对顺序和性能的需求。
251 2
|
11月前
|
存储 算法 搜索推荐
排序方法8大总结
排序方法8大总结
|
算法 搜索推荐 Java
数组的四种排序方法介绍
数组的四种排序方法介绍
354 0
|
存储 算法 Java
TreeSet类的排序问题
TreeSet支持两种排序方法:自然排序和定制排序。TreeSet默认采用自然排序。1、自然排序    TreeSet会调用集合元素的compareTo(Object obj)方法来比较元素之间大小关系,然后将集合元素按升序排列,这种方式就是自然排序。
1718 0
|
存储 安全 API
TreeSet详解
TreeSet详解
235 0
TreeSet详解