java list属性排序_Java对LIst中的某一属性进行排序-Fun言

前言

在java开发中,经常要对数据进行排序,当然大部分的排序都可以在数据库中进行操作,但是要想对一些混合的数据进行排序则需要在java中进行排序,所以我们接下来就说说对LIst中的某一属性进行排序。

示例List shops=new ArrayList<>();

Shop shop;

shop=new Shop();

shop.setOrder(2);

shop.setShopName("asd");

shops.add(shop);

shop=new Shop();

shop.setOrder(1);

shop.setShopName("qwe");

shops.add(shop);

shop=new Shop();

shop.setOrder(3);

shop.setShopName("zxc");

shops.add(shop);

这里有个含有shop实体类的list,然后我们要对order这个字段进行排序。

具体实现

对于Java中一个已经存在的List来说,要给他排序,传统上有两种方式:一个是Bean要实现Comparable接口,另一个是创建Comparator子类。

第一种方式需要在原有的Bean上扩展Comparable接口,一般使用不多,因为最好不要随意更改JavaBean。

第二种方式则是独立于原有JavaBean,实现的方法需要传入两个Bean对象。

所以这里着重实现第二种方式,因为传统的方法一个需要扩展原有Bean,另一个需要新建一个Java类,这样的工作方式看起来笨重,操作起来也不方便。如果要对10个不同类型List集合排序,它就需要扩展10个Bean,或者新建10个类。

代码public static void main(String[] args) {

List shops=new ArrayList<>();

Shop shop;

shop=new Shop();

shop.setOrder(2);

shop.setShopName("asd");

shops.add(shop);

shop=new Shop();

shop.setOrder(1);

shop.setShopName("qwe");

shops.add(shop);

shop=new Shop();

shop.setOrder(3);

shop.setShopName("zxc");

shops.add(shop);

//进行排序

boolean flag=true;

Comparator mycmp = ComparableComparator.getInstance();

mycmp = ComparatorUtils.nullLowComparator(mycmp); //允许null,会把null值放到最后

if(flag){

mycmp = ComparatorUtils.reversedComparator(mycmp); //逆序,这里调用这个reversedComparator就是逆序,不调用就是正序

}

Comparator cmp = new BeanComparator("grade", mycmp);

Collections.sort(shops, cmp);

for (int i = 0; i < shops.size(); i++) {

System.out.println(shops.get(i).getGrade());

System.out.println(shops.get(i).getShopName());

}

}

这里主要用的就是ComparatorUtils中的方法,具体实现可以google一下

结果1

qwe

2

asd

3

zxc

你还没有登录,请先使用 QQ登录 或 注册!

文章评论

发表评论

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值