`
584506509
  • 浏览: 11425 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

依据List内部对象的某字段进行排序的方法

阅读更多

依据List内部对象的某字段进行排序的方法

List内部对象类IntStringtest为测试用例类

Collections.sort方法,实现对List的排序,需要重写Comparator方法

代码如下:

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;
//		}
	}

}

 如果是String类型的数据比较大小,Comparator方法里用str1.compareTo(str2) 方法,如果是数值比较大小,则用<,=,>比较,>返回1,=返回0,<返回-1。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics