java中comparator是什么,怎么使用呢?不知道的小伙伴來看看小編今天的分享吧!
1、comparator簡介:
comparator是javase中的接口,位于java.util包下。
2、功能
comparator接口代表一個比較器,比較器具有可比性。
javase一些使用到Comparator接口的地方:
Arrays.sort(T[],Comparator<? super T> c);
Collections.sort(List<T> list,Comparator<? super T> c);
3、comparator使用場景
排序:需要比較兩個對象誰排在前誰排在后(排序也可以讓類實現(xiàn)Comparable接口,實現(xiàn)后該類的實例也具有排序能力)。
分組:需要比較兩個對象是否是屬于同一組。
舉例:
排序
在List或數(shù)組中的對象如果沒有實現(xiàn)Comparable接口時,那么就需要調(diào)用者為需要排序的數(shù)組或List設(shè)置一個Compartor,Compartor的compare方法用來告訴代碼應(yīng)該怎么去比較兩個實例,然后根據(jù)比較結(jié)果進行排序:
talk is cheap show me the code
package com.java.demo;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
* @author puyf
*/
public class SortTest {
class Dog{
public int age;
public String name;
public Dog(int age, String name) {
super();
this.age = age;
this.name = name;
}
@Override
public String toString() {
return "Dog [age=" + age + ", name=" + name + "]";
}
}
public static void main(String[] args) {
List<Dog> list= new ArrayList<>();
list.add(new SortTest().new Dog(5, "DogA"));
list.add(new SortTest().new Dog(6, "DogB"));
list.add(new SortTest().new Dog(7, "DogC"));
Collections.sort(list, new Comparator<Dog>() {
@Override
public int compare(Dog o1, Dog o2) {
return o2.age - o1.age;
}
});
System.out.println("給狗狗按照年齡倒序:"+list);
Collections.sort(list, new Comparator<Dog>() {
@Override
public int compare(Dog o1, Dog o2) {
return o1.name.compareTo(o2.name);
}
});
System.out.println("給狗狗按名字字母順序排序:"+list);
}
}
4、總結(jié)
一般需要做比較的邏輯都可以使用的上Comparator,最常用的場景就是排序和分組,排序常使用Arrays和Collections的sort方法,而分組則可以使用上面提供的divider方法。
排序和分組的區(qū)別在于:
排序時,兩個對象比較的結(jié)果有三種:大于,等于,小于。
分組時,兩個對象比較的結(jié)果只有兩種:等于(兩個對象屬于同一組),不等于(兩個對象屬于不同組)
以上就是小編今天的分享了,希望可以幫助到大家。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com