一個人如果沒有夢想,跟無憂無慮有什麼區別呢?
今天來給大家介紹下java.utils包下的Comparator接口。該接口代表一個比較器,java數組工具類和集合工具類中提供對sort方法排序就是使用Comparator接口來處理排序的。
Comparator接口中有一個方法int compare(T o1, T o2)。這個方法返回值是int類型,如果返回值小於0,說明比較結果是o1o2。
既然是接口,那麼我們就可以實現它,來自定義其中對比較規則,即可實現在一個List列表中將元素按照某個屬性進行排序。
下面我們用代碼舉例說明,如下:
package com.java.utils.Comparator; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; /** * 類說明: * 比較器Comparator接口的應用 */ public class ComparatorTest { /** * 實體對象類 */ static class User { String name; int age; public User(String name,int age) { this.name=name; this.age=age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } /** * 自定義比較器 * 根據名稱比較 */ static class MyComparatorName implements Comparator{ @Override public int compare(User u1, User u2) { return u1.getName().compareTo(u2.getName()) * -1; } } /** * 自定義比較器 * 根據年齡比較 */ static class MyComparatorAge implements Comparator{ @Override public int compare(User u1, User u2) { return (u1.getAge() - u2.getAge()); } } //測試 public static void main(String[] args) { List list =new ArrayList(); User u1 = new User("a", 2); User u2 = new User("d", 0); User u3 = new User("c", 3); list.add(u1); list.add(u2); list.add(u3); Collections.sort(list, new MyComparatorName()); for(User u :list){ System.out.println(u.getName()); } Collections.sort(list, new MyComparatorAge()); for(User u :list){ System.out.println(u.getAge()); } } }
在上面對例子中,我們首先按照名稱從大到小進行排序,輸出結果是d、c、a然後又按照年齡從小到大進行排序,輸出結果是0、2、3。
需要注意的是,Collections.sort方法默認是按照返回結果從小到大進行排序,如果我們需要從大到小則在實現比較器大時候將返回結果乘以-1即可。
是不是很簡單?如果是我們自己實現比較器,那麼我們就可以根據實際的業務需求去實現排序。