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"}

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...