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

相关内容

热门资讯

玩家最新攻略“阳光巴厘岛.有没... 家人们!今天小编来为大家解答阳光巴厘岛透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里买...
今日重大通报“大庆划水麻将.怎... 家人们!今天小编来为大家解答大庆划水麻将透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里...
玩家攻略科普“欢乐龙城9.究竟... 您好:欢乐龙城9这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款游...
终于明白“青松游戏.真的有挂吗... 您好:青松游戏这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款游戏...
【第一资讯】“火神牛牛.怎么开... 有 亲,根据资深记者爆料火神牛牛是可以开挂的,确实有挂(咨询软件无需打开...
今日重大消息“大庆划水麻将.有... 网上科普关于“大庆划水麻将有没有挂”话题很是火热,小编也是针对大庆划水麻将作*弊开挂的方法以及开挂对...
今日重大通报“同城跑胡子.到底... 网上科普关于“同城跑胡子有没有挂”话题很是火热,小编也是针对同城跑胡子作*弊开挂的方法以及开挂对应的...
【第一消息】“灯塔麻将.辅助开... 家人们!今天小编来为大家解答灯塔麻将透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里买很...
【第一消息】“沧海麻将.到底是... 网上科普关于“沧海麻将有没有挂”话题很是火热,小编也是针对沧海麻将作*弊开挂的方法以及开挂对应的知识...
京东:近期有不法分子冒名邮寄虚... 【大河财立方消息】 12月22日,京东发言人微博发文称,近期,发现有不法分子冒充京东向用户邮寄低价值...