collections.sort对javabean的list
admin
2023-01-31 04:01:37
0

1、collection.sort排序

算法底层实际是 将集合转换成array,再执行arrays.sort,arrays.sort利用归并排序,优化的快排,timSort等方式。

2、对string类型数据排序

public static void collectionSort() {
		List unSorted = new ArrayList();
		unSorted.add("10");
		unSorted.add("99");
		unSorted.add("21");
		Collections.sort(unSorted);
		for(String a:unSorted) {
			System.out.print(a +"  ");

		}
	}

输出:10 21 99

3、对javabean类型数据排序

(1)方式一

import java.io.Serializable;

public class unSortedBean implements Serializable{

	private static final long serialVersionUID = 1L;
	
	private String name;
	private String age;
	private int order;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	public int getOrder() {
		return order;
	}
	public void setOrder(int order) {
		this.order = order;
	}

}

以下为排序代码,编译期就报错:

public static void javaBeanSort() {
		List unSorted = new ArrayList();
		unSortedBean a1 = new unSortedBean();
		a1.setName("张三");
		a1.setAge("24");
		a1.setOrder(9);
		unSorted.add(a1);
		unSortedBean a2 = new unSortedBean();
		a2.setName("李四");
		a2.setAge("22");
		a2.setOrder(5);
		unSorted.add(a2);
		unSortedBean a3 = new unSortedBean();
		a3.setName("王五");
		a3.setAge("36");
		a3.setOrder(10);
		unSorted.add(a3);
		Collections.sort(unSorted);
	}

原因:string实现了comparable接口,而自定义的javabean未实现,可以用这种方式排序

Collections.sort(unSorted,new Comparator() {

			@Override
			public int compare(unSortedBean arg0, unSortedBean arg1) {
				// 升叙
				return arg0.getOrder()-arg1.getOrder();
			}
		});
		for(unSortedBean bean:unSorted) {
			System.out.print(JSONObject.fromObject(bean));
		}

输出:{"order":5,"name":"李四","age":"22"}{"order":9,"name":"张三","age":"24"}{"order":10,"name":"王五","age":"36"}

(2)方式二

也可以用collections.sort();方式,只需要javabean实现comparable接口

import java.io.Serializable;

public class unSortedBean implements Serializable, Comparable{

	private static final long serialVersionUID = 1L;
	
	private String name;
	private String age;
	private int order;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	
	public int getOrder() {
		return order;
	}
	public void setOrder(int order) {
		this.order = order;
	}
	@Override
	public int compareTo(unSortedBean arg0) {
		// TODO 升叙
		return this.order-arg0.getOrder();
	}
	

}

输出:{"order":5,"name":"李四","age":"22"}{"order":9,"name":"张三","age":"24"}{"order":10,"name":"王五","age":"36"}


注意:如果order是string型数字,需要转换成数字型再比较,否则比较结果可能不是预期效果。

比如把本文中的order全部换成string型,输出结果为

{"order":10,"name":"王五","age":"36"}{"order":5,"name":"李四","age":"22"}{"order":9,"name":"张三","age":"24"}

相关内容

热门资讯

我们的“文化体力”是如何被耗尽... 《花束般的恋爱》2026年已经过半,要盘点前半年爆火的流行语,“赛博确诊”一定是其中之一。大批年轻人...
跨国药企正在疯狂买中国创新药,... ► 文 观察者网心智观察所2026年的中国创新药行业,正在发生一个耐人寻味的场景。一边,全球最大的跨...
知名装机up主被曝负债200万... 据都市快报消息:7月21日,深耕高端PC圈的B站UP主(B站、小红书、抖音等平台上传视频的创作者、博...
AI脸让人生理性厌恶?“恐怖谷... 【文/观察者网 夏曼波】最近,“对AI脸感到不适”相关话题频繁上热搜,网友纷纷表示“不适”、“生理性...
要管管国会山股神了?美国参议院... 作者 | 第一财经 樊志菁当地时间周三,美国议会众议院以232票对198票表决结果,通过一项名为《停...
济南一广场突现“知了大军”密密... 近日,有济南市民在社交媒体发布视频称:在当地彩石附近的一处广场地面上密密麻麻聚集了很多类似知了的昆虫...
伊朗军队:打击科威特境内多处美... 当地时间23日,伊朗军队在一份公告中指出,几小时前,伊朗军队对科威特多哈营地的美军弹药和后勤仓库、阿...
洛阳“珠宝大王”年永安沉浮:涉... 澎湃新闻记者 王鑫 实习生 林晨 林宜之河南洛阳的“珠宝大王”年永安淡出公众视野多年后,这个曾把“金...
聚焦核心AI项目,亚马逊裁撤其... 亚马逊在本周三宣布新动态,公司正在裁撤通用人工智能(AGI)部门的部分员工,这标志着亚马逊在持续向人...
上海交大发布第七届“十大科技进... 7月22日,上海交通大学第七届“十大科技进展”在闵行大零号湾成果转化中心发布。本届入选成果包括6项基...