两个集合按照其中一个特定的集合进行排序

本文介绍了如何使用Java代码实现一个排序方法,根据预设的字符串列表顺序,对User对象列表进行排序,适用于排序规则不仅限于字符串,还可基于对象属性。实例展示了如何使用`Collections.sort`和自定义比较器来达到预期效果。
摘要由CSDN通过智能技术生成
 /**
     * 两个集合按照指定的顺序进行排序
     * @param list  排序规则
    //        List<String> list = Arrays.asList("test2","test1","test4","test3");
    
     * @param usersList  排序对象集合

    //        Users users1 = new Users();
    //        users1.setUserId("1");
    //        users1.setUserName("test1");
    //
    //        Users users2 = new Users();
    //        users2.setUserId("2");
    //        users2.setUserName("test2");
    //
    //        Users users3 = new Users();
    //        users3.setUserId("3");
    //        users3.setUserName("test3");
    //
    //        Users users4 = new Users();
    //        users4.setUserId("4");
    //        users4.setUserName("test4");
    //
    //        List<Users> userList = new ArrayList<>();
    //        userList.add(users1);
    //        userList.add(users2);
    //        userList.add(users3);
    //        userList.add(users4);
     */
    private void sort(List<String> list,List<Users> usersList){
        if (CollectionUtils.isEmpty(list) && CollectionUtils.isEmpty(usersList)){
            return;
        }
        Collections.sort(usersList, ((o1, o2) -> {
            int io1 = list.indexOf(o1.getUserName());
            int io2 = list.indexOf(o2.getUserName());
            if (-1 != io1) {
                io1 = usersList.size() - io1;
            }
            if (-1 != io2) {
                io2 = usersList.size() - io2;
            }
            return io2 - io1;
        }));
    }

排序前输出顺序:

{user1,user2,user3,user4}

排序后输出顺序

{user2,user1,user4,user3}

排序规则对象也可以为另一个对象的某一个属性,不单单限于字符串

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值