當前位置:生活全書館 >

IT科技

> comparator java

comparator java

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使用場景

排序:需要比較兩個物件誰排在前誰排在後(排序也可以讓類實現Comparable介面,實現後該類的例項也具有排序能力)。

分組:需要比較兩個物件是否是屬於同一組。

java comparator

舉例:

排序

在List或陣列中的物件如果沒有實現Comparable介面時,那麼就需要呼叫者為需要排序的陣列或List設定一個Compartor,Compartor的compare方法用來告訴程式碼應該怎麼去比較兩個例項,然後根據比較結果進行排序:

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);

}

}

java comparator 第2張

4、總結

一般需要做比較的邏輯都可以使用的上Comparator,最常用的場景就是排序和分組,排序常使用Arrays和Collections的sort方法,而分組則可以使用上面提供的divider方法。

排序和分組的區別在於:

排序時,兩個物件比較的結果有三種:大於,等於,小於。

分組時,兩個物件比較的結果只有兩種:等於(兩個物件屬於同一組),不等於(兩個物件屬於不同組)

標籤: comparator java
  • 文章版權屬於文章作者所有,轉載請註明 https://shqsg.com/dianzi/yqm4zk.html