java list sort排序_collections.sort对javabean的list进行排序

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值