List内部のオブジェクトのあるフィールドを並べ替える方法:Collection.sort()

2443 ワード

http://www.iteye.com/topic/1128840
リスト内のオブジェクトのあるフィールドを並べ替える方法
List内部対象クラスInt String、testは試験用例類である.
Collection.sortでListの並び替えを実現するには、Compratorメソッドを書き換える必要があります.
コードは以下の通りです
Listに格納されたエンティティ
package org.iti.wxl.listobjectsort;

public class IntString {
	
	private Integer no;
	
	private String str;

	public Integer getNo() {
		return no;
	}

	public void setNo(Integer no) {
		this.no = no;
	}

	public String getStr() {
		return str;
	}

	public void setStr(String str) {
		this.str = str;
	}

	@Override
	public String toString() {
		return "IntString [" + (no != null ? "no=" + no + ", " : "")
				+ (str != null ? "str=" + str : "") + "]";
	}

}
package org.iti.wxl.listobjectsort;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class Test {
	public static void main(String[] args) {
		List<IntString> islist = new ArrayList<IntString>();
		IntString is1 = new IntString();
		is1.setNo(1);
		is1.setStr(" 091");

		IntString is3 = new IntString();
		is3.setNo(3);
		is3.setStr(" 093");

		IntString is2 = new IntString();
		is2.setNo(2);
		is2.setStr(" 092");

		islist.add(is1);
		islist.add(is3);
		islist.add(is2);
		
		System.out.println(islist);
		Collections.sort(islist, new MyComparator());
		System.out.println(islist);
	}
}

class MyComparator implements Comparator<Object> {
	@Override
	public int compare(Object o1, Object o2) {
		IntString iso1 = (IntString)o1;
		IntString iso2 = (IntString)o2;
		String str1 = iso1.getStr();
		String str2 = iso2.getStr();
		return str1.compareTo(str2);
//		Integer no1 = iso1.getNo();
//		Integer no2 = iso2.getNo();
//		if(no1 > no2){
//			return 1;
//		}else if(no1 < no2){
//			return -1;
//		}else{
//			return 0;
//		}
	}

}