码迷,mamicode.com
首页 > 编程语言 > 详细

java 集合框架(TreeSet操作,自动对数据进行排序,重写CompareTo方法)

时间:2015-01-22 17:18:31      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

/*TreeSet
* treeSet存入数据后自动调用元素的compareTo(Object obj) 方法,自动对数据进行排序
* 所以输出的数据是经过排序的数据
* 注:compareTo方法返回值有:负数,零,正数。分别表示小于,等于,大于
* 对于存入自定义的对象元素,要重写元素的compareTo(Object obj)方法
* 元素定义时,需要实现Comparable接口
* */

 

 1 import java.util.Iterator;
 2 import java.util.TreeSet;
 3 public class StudentCode {
 4     
 5     public static void main(String []args){
 6         //定义TreeSet对象,并赋值java存在的对象
 7         TreeSet ts1=new TreeSet();
 8         ts1.add("java10");
 9         ts1.add("java01");
10         ts1.add("java08");
11         ts1.add("java04");
12         //输出对象的值,是经过排序的数据
13         System.out.println(ts1);
14         //定义TreeSet对象,并赋值自定义的对象
15         TreeSet ts2=new TreeSet();
16         ts2.add(new Person("ls",11));
17         ts2.add(new Person("zs",22));
18         ts2.add(new Person("ls",13));
19         ts2.add(new Person("ls",11));
20         //输出对象,也是经过排序的数据
21         for(Iterator it=ts2.iterator();it.hasNext();){
22             Person p=(Person)it.next();
23             System.out.println("姓名:"+p.getName()+",年龄:"+p.getAge());
24         }
25     }
26 }
27 //自定义数据,需要实现Comparable接口
28 class Person implements Comparable{
29     private String name;
30     private int age;
31     Person(String name,int age){
32         this.name=name;
33         this.age=age;
34     }
35     public String getName(){
36         return this.name;
37     }
38     public int getAge(){
39         return this.age;
40     }
41     //重写compareTo()方法,
42     public int compareTo(Object obj){
43         if(!(obj instanceof Person))
44             throw new RuntimeException("不是Person对象");
45         Person p =(Person)obj;
46         if(this.age>p.getAge()){
47             return 1;
48         }
49         else if(this.age<p.getAge()){
50             return -1;
51         }else{
52             return this.name.compareTo(p.getName());
53         }
54     }
55 }

 

 1 /*TreeSet
 2  *     treeSet当元素不具备比较性,或者比较性不是所需要的时候,
 3  *         可以使treeSet集合具有比较性。
 4  *         定义比较器,并将比较器作为参数传给TreeSet集合
 5  *         比较器需要实现Comparator接口
 6  *     当元素具备比较性和比较器同时出现时,以比较器为准。
 7  * */
 8 import java.util.Comparator;
 9 import java.util.Iterator;
10 import java.util.TreeSet;
11 public class StudentCode {
12     
13     public static void main(String []args){
14         //定义TreeSet对象,并传入比较器
15         TreeSet ts2=new TreeSet(new MyCompareble());
16         ts2.add(new Person("ls",11));
17         ts2.add(new Person("zs",22));
18         ts2.add(new Person("ls",13));
19         ts2.add(new Person("ls",11));
20         //输出对象
21         for(Iterator it=ts2.iterator();it.hasNext();){
22             Person p=(Person)it.next();
23             System.out.println("姓名:"+p.getName()+",年龄:"+p.getAge());
24         }
25     }
26 }
27 //定义比较器 — — — — 以姓名为第一顺序,年龄为第二顺序
28 class MyCompareble implements Comparator{
29     //实现比较器里面的compare方法
30     public int compare(Object o1,Object o2){
31         Person p1=(Person)o1;
32         Person p2=(Person)o2;
33         int num=p1.getName().compareTo(p2.getName());
34         if(num==0){
35             return new Integer(p1.getAge()).compareTo(new Integer(p2.getAge()));
36         }
37         return num;
38     }
39 }
40 
41 //自定义数据,需要实现Comparable接口 — — — — 以年龄为第一顺序,姓名为第二顺序
42 class Person implements Comparable{
43     private String name;
44     private int age;
45     Person(String name,int age){
46         this.name=name;
47         this.age=age;
48     }
49     public String getName(){
50         return this.name;
51     }
52     public int getAge(){
53         return this.age;
54     }
55     //重写compareTo()方法,
56     public int compareTo(Object obj){
57         if(!(obj instanceof Person))
58             throw new RuntimeException("不是Person对象");
59         Person p =(Person)obj;
60         if(this.age>p.getAge()){
61             return 1;
62         }
63         else if(this.age<p.getAge()){
64             return -1;
65         }else{
66             return this.name.compareTo(p.getName());
67         }
68     }
69 }

 

java 集合框架(TreeSet操作,自动对数据进行排序,重写CompareTo方法)

标签:

原文地址:http://www.cnblogs.com/zxxiaoxia/p/4241763.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!