关于comparable与comparator的用法(即自定义集合框架用法 )
生活随笔
收集整理的這篇文章主要介紹了
关于comparable与comparator的用法(即自定义集合框架用法 )
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1 package javastudy;
2
3 import java.util.Comparator;
4 import java.util.Iterator;
5 import java.util.TreeSet;
6 public class Ptext {
7
8 public static void main(String[] args) {
9 // TODO Auto-generated method stub
10 //關(guān)于comparable的用法:以Person為例進(jìn)行排序:
11 /**用法聲明
12 * 1。建立一個(gè)Person類,并定義name,age
13 * 2.建立Person的構(gòu)造函數(shù)
14 * 3.建立Person集合框架,并在數(shù)組中賦值,遍歷打印輸出。
15 * 4.運(yùn)行,會(huì)報(bào)錯(cuò),原因是兩個(gè)不能比較,所以在此要建立比較方法
16 * 5.在Person中繼承comparable,并重寫方法。
17 * 6.根據(jù)api中內(nèi)容,定義比較值還回-1,1,0.
18 * 7.運(yùn)行
19 * */
20 TreeSet<Person> ts = new TreeSet<Person>();
21 ts.add(new Person("Mark",12));
22 ts.add(new Person("Keven",16));
23 ts.add(new Person("Bob",20));
24 ts.add(new Person("Jine",19));
25 for(Iterator<Person> it=ts.iterator();it.hasNext();)
26 {
27 Person p = it.next();
28 p.show();
29 System.out.println(it.next());
30 }
31 //自己建立一個(gè)比較器,即comparator的用法,以Dog為例進(jìn)行;
32 /**
33 * 1.與person類似,建立Dog類,并定義name,weight;
34 * 2.建立構(gòu)造方法;
35 * 3.打印輸出或者建立toString方法(原因,如果不建立打印輸出方法,在主函數(shù)中遍歷是會(huì)出現(xiàn)javastudy.Person@4aa298b7這種類型)
36 * 4。在主函數(shù)中建立自定義Dog的集合數(shù)組,
37 * 5.建立一個(gè)自定義比較器,MyCom并集成Comparator
38 * 6.定義比較方法
39 * 7.運(yùn)行。
40 * */
41 TreeSet<Dog> ds = new TreeSet<Dog>(new MyCom());
42 ds.add(new Dog("Mark",12));
43 ds.add(new Dog("Keven",16));
44 ds.add(new Dog("Bob",20));
45 ds.add(new Dog("Jine",19));
46 for(Iterator<Dog> it=ds.iterator();it.hasNext();)
47 {
48 System.out.println(it.next());
49 }
50 }
51
52 }
53
54 class Person implements Comparable<Person> {
55 String name;
56 int age;
57 Person(String name,int age)
58 {
59 this.name=name;
60 this.age=age;
61 }
62 void show(){
63 System.out.println(String.format("姓名=%s,年齡=%d", name,age));
64 }
65
66 public int compareTo(Person o) {
67 // TODO Auto-generated method stub
68 if(this.age < o.age)
69 {
70 return 1;
71 }
72 else if(this.age>o.age)
73 {
74 return -1;
75 }
76 else
77 {
78 return 0;
79 }
80 }
81 }
82 //關(guān)于comparator的用法,即DOG例子說明;
83
84 class MyCom implements Comparator<Dog>
85 {
86
87 @Override
88 public int compare(Dog arg0, Dog arg1) {
89 // TODO Auto-generated method stub
90 //這里與return 1 ,-1,0.的用法一樣,這是簡(jiǎn)寫。
91 //注:因?yàn)榻⒌淖远x比較Dog1,與dog2,所以這里兩種方法都可以使用。而第一種只是利用comparable不行。
92 return arg0.name.compareTo(arg1.name);
93 }
94
95 }
96 class Dog
97 {
98 String name;
99 int weight;
100 Dog(String name,int weight)
101 {
102 this.name=name;
103 this.weight=weight;
104 }
105 @Override
106 public String toString() {
107 return "Dog [name=" + name + ", weight=" + weight + "]";
108 }
109 }
?
轉(zhuǎn)載于:https://www.cnblogs.com/xiadongqing/p/5079765.html
總結(jié)
以上是生活随笔為你收集整理的关于comparable与comparator的用法(即自定义集合框架用法 )的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 移动端触屏网页的触摸事件
- 下一篇: Android 开发之Windows环境