Comparator 和 Comparable
生活随笔
收集整理的這篇文章主要介紹了
Comparator 和 Comparable
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Comparator 和 Comparable 比較
Comparable是排序接口;若一個類實現了Comparable接口,就意味著“該類支持排序”。
而Comparator是比較器;我們若需要控制某個類的次序,可以建立一個“該類的比較器”來進行排序。
我們不難發現:Comparable相當于“內部比較器”,而Comparator相當于“外部比較器”。
Comparable位于java.lang包下,comparator位于java.util包下
實現comparable接口的類,需要重寫compareTo()方法
實現comparator接口的類,需要重寫compare()方法
實現Comparable接口的對象列表(和數組)可以通過?Collections.sort(和?Arrays.sort)進行自動排序
強行對某個對象 collection 進行整體排序的比較函數。可以將 Comparator 傳遞給 sort 方法(如?Collections.sort?或?Arrays.sort),從而允許在排序順序上實現精確控制。
實現Comparable接口的使用實例
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;} }
?
實現comparator接口的實例:
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));}}
?
轉載于:https://www.cnblogs.com/zmhappy/p/6484789.html
總結
以上是生活随笔為你收集整理的Comparator 和 Comparable的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 培训英语多少钱啊?
- 下一篇: 有人知道这是啥电影吗?