花旗軟件 電面問題(一) 根據對象的某一屬性排序一組對象(JAVA實現)

筆者最近在接受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);
		}
		
	}
}

很簡單,我提供了一組對象,希望能夠根據對象的年齡按照從大到小的方式排序,並輸出年齡,我們看下輸出:



真的很簡單,但是如果沒有想到比較器的話,解決起來確實很麻煩!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章