日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于comparable与comparator的用法(即自定义集合框架用法 )

發(fā)布時(shí)間:2025/3/20 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于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.的用法一樣,這是簡寫。 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的用法(即自定义集合框架用法 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。