筆者最近在接受CITI(花旗銀行)的電面的過程中,被問到了如何根據一個對象的某一個屬性排序一組對象,當時確實沒有想到比較器的概念,整理了一下使用比較器的方式,提供給大家,也希望大家能夠在其他應用中靈活應用,也是爲筆者鞏固JAVA基礎(基礎很重要,這都是一些基本的使用場景和方法,需要牢牢記住)
定義一個People,就兩個屬性:name和age
public class People {
String name;
int age;
public People(String name, int age) {
this.name = name;
this.age = age;
}
}
主類,其中定義了一個比較器:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public class Test {
static LinkedList<People> list = new LinkedList<People>();
private class CompareList implements Comparator<People>{
@Override
public int compare(People arg0, People arg1) {
int age1 = arg0.age;
int age2 = arg1.age;
return age1 >= age2 ? -1 : 1;
}
}
public static void main(String[] args){
List<People> list1 = new ArrayList<People>();
list1.add(new People("1",1));
list1.add(new People("2",2));
list1.add(new People("3",3));
list1.add(new People("4",4));
list1.add(new People("5",5));
list1.add(new People("6",6));
Test test = new Test();
Collections.sort(list1, test.new CompareList());
Iterator<People> it = list1.iterator();
while(it.hasNext()){
System.out.println(it.next().age);
}
}
}
很簡單,我提供了一組對象,希望能夠根據對象的年齡按照從大到小的方式排序,並輸出年齡,我們看下輸出:
真的很簡單,但是如果沒有想到比較器的話,解決起來確實很麻煩!