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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Comparator 和 Comparable

發(fā)布時間:2023/11/27 生活经验 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Comparator 和 Comparable 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Comparator 和 Comparable 比較

Comparable是排序接口;若一個類實(shí)現(xiàn)了Comparable接口,就意味著“該類支持排序”。
而Comparator是比較器;我們?nèi)粜枰刂颇硞€類的次序,可以建立一個“該類的比較器”來進(jìn)行排序。

我們不難發(fā)現(xiàn):Comparable相當(dāng)于“內(nèi)部比較器”,而Comparator相當(dāng)于“外部比較器”。

Comparable位于java.lang包下,comparator位于java.util包下

實(shí)現(xiàn)comparable接口的類,需要重寫compareTo()方法

實(shí)現(xiàn)comparator接口的類,需要重寫compare()方法

實(shí)現(xiàn)Comparable接口的對象列表(和數(shù)組)可以通過?Collections.sort(和?Arrays.sort)進(jìn)行自動排序

強(qiáng)行對某個對象 collection 進(jìn)行整體排序的比較函數(shù)。可以將 Comparator 傳遞給 sort 方法(如?Collections.sort?或?Arrays.sort),從而允許在排序順序上實(shí)現(xiàn)精確控制。

實(shí)現(xiàn)Comparable接口的使用實(shí)例

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;public class Present1 implements Comparable<Present1>{private int num;private double price;private String name;public Present1(int num,double price,String name) {// TODO Auto-generated constructor stubthis.num=num;this.price=price;this.name=name;}public static void main(String args[]){Present1 p1=new Present1(10, 20, "手表");Present1 p2=new Present1(15, 30, "裙子");Present1 p3=new Present1(12, 24, "包包");Present1 p4=new Present1(40, 40, "書");List<Present1> list=new ArrayList<Present1>();list.add(p1);list.add(p2);list.add(p3);list.add(p4);Collections.sort(list);for(int i=0;i<list.size();i++){System.out.println(list.get(i).num);}}@Overridepublic int compareTo(Present1 o) {// TODO Auto-generated method stubreturn this.num-o.num;}
}

?

實(shí)現(xiàn)comparator接口的實(shí)例:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;public class Present2 {public int num;public double price;public String name;public Present2(int num,double price,String name) {// TODO Auto-generated constructor stubthis.num=num;this.price=price;this.name=name;}public static void main(String args[]){Present2 p1=new Present2(10, 20, "手表");Present2 p2=new Present2(15, 15, "裙子");Present2 p3=new Present2(12, 24, "包包");Present2 p4=new Present2(40, 23, "書");List<Present2> list=new ArrayList<Present2>();list.add(p1);list.add(p2);list.add(p3);list.add(p4);Collections.sort(list, new numComparator());for(int i=0;i<list.size();i++){System.out.println(list.get(i).num+" -"+list.get(i).name);}Collections.sort(list, new priceComparator());for(int i=0;i<list.size();i++){System.out.println(list.get(i).price+" -"+list.get(i).name);}}
}class numComparator implements Comparator<Present2>{@Overridepublic int compare(Present2 o1, Present2 o2) {// TODO Auto-generated method stubreturn o1.num-o2.num;}}class priceComparator implements Comparator<Present2>{@Overridepublic int compare(Present2 o1, Present2 o2) {// TODO Auto-generated method stubreturn new Double(o1.price).compareTo(new Double(o2.price));}}

?

轉(zhuǎn)載于:https://www.cnblogs.com/zmhappy/p/6484789.html

總結(jié)

以上是生活随笔為你收集整理的Comparator 和 Comparable的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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