TreeSet

 1 package settest;
 2 
 3 import listtest.Person;
 4 import org.junit.Test;
 5 
 6 import java.util.Comparator;
 7 import java.util.Iterator;
 8 import java.util.TreeSet;
 9 
10 /**
11  *
12  *
13  * @author FuJingchao
14  * @Date: 2021/12/20 - 20:28
15  */
16 public class TreeSetTest {
17     /*
18     1.向TreeSet中添加的数据,要求是相同类的对象
19     2.两种排序方式:自然排序(实现Comparable接口)和定制排序(和Comparator接口相关)
20 
21     3.自然排序中,比较两个对象是否相同的标准为:compareTo()返回0,不再是equals()
22       定制排序中,比较两个对象是否相同的标准为:compare()f返回0,不再是equals()
23      */
24     @Test
25     public void test1() {
26         TreeSet treeSet = new TreeSet();
27         //失败:不能添加不同类的对象
28 //        treeSet.add(123);
29 //        treeSet.add(456);
30 //        treeSet.add("AA");
31 //        treeSet.add(new Person("Tom",12));
32 
33         //成功:举例一
34 //        treeSet.add(12);
35 //        treeSet.add(5);
36 //        treeSet.add(32);
37 //        treeSet.add(-10);
38 //        Iterator iterator = treeSet.iterator();
39 //        while (iterator.hasNext()){
40 //            System.out.println(iterator.next());
41 //        }
42 
43         //成功:举例二
44         treeSet.add(new Person("Tom",12));
45         treeSet.add(new Person("jack",5));
46         treeSet.add(new Person("jim",23));
47         treeSet.add(new Person("bob",23));
48 
49         Iterator iterator = treeSet.iterator();
50         while (iterator.hasNext()){
51             System.out.println(iterator.next());
52         }
53 
54     }
55 
56     //按照年龄从大到小排序,再按照姓名名称从小到大排序
57     @Test
58     public void test3 () {
59         Comparator com = new Comparator() {
60             @Override
61             public int compare(Object o1, Object o2) {
62                 if(o1 instanceof Person && o2 instanceof Person){
63                     Person p1 = (Person) o1;
64                     Person p2 = (Person) o2;
65                     int compare = - Integer.compare(p1.getAge(),p2.getAge());
66                     if(compare != 0){
67                         return compare;
68                     }else {
69                         return p1.getName().compareTo(p2.getName());
70                     }
71                 }
72                 throw new RuntimeException("输入的数据类型不一致!");
73                 }
74         };
75 
76         TreeSet treeSet = new TreeSet(com);
77         treeSet.add(new Person("Tom",12));
78         treeSet.add(new Person("jack",5));
79         treeSet.add(new Person("jim",23));
80         treeSet.add(new Person("bob",23));
81 
82         Iterator iterator = treeSet.iterator();
83         while (iterator.hasNext()){
84             System.out.println(iterator.next());
85         }
86 
87     }
88 
89 
90 }

 

posted @ 2021-12-20 21:59  橘猫的夏天  阅读(50)  评论(0编辑  收藏  举报