个人整理 java 针对于自定义排序

本文介绍了一种根据自定义规则对SQL查询结果进行排序的方法。通过创建一个映射来记录参数顺序,并利用Comparator接口对List集合内的元素按指定顺序进行排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求 针对于接收的字符串 或者其他参数 ,进行 SQL返回值排序 : 

Map<String, Integer> sortRule = new HashMap<>();  // 自定义规则 Map 用于收集 传入参数的顺序
int i = 0 ;
for (String key : str.split(",")) {
    sortRule.put(key,i++); # 收集 所传入参数的数据
}
List<String> userList = new ArrayList(); // 需要自定义顺序的List 亦可是 SQL 返回数据
userList.sort((str1,str2) ->{
// 将List中内容进行自定义排序 
    String UserName = str1.getUserName();
    String UserName1 = str2.getUserName();
    Integer rule1=sortRule.get(UserName);
    Integer rule2=sortRule.get(UserName1);
    if(null==rule1){
        rule1=sortRule.size();
    }
    if(null==rule2){
        rule2=sortRule.size();
    }
    return rule1-rule2;
});

原理: 

userList.sort(); // default void sort(Comparator<? super E> c) { ... }

使用Comparator进行排序 : 

将List中的字符 去自定义排序Map中获取对应的传入顺序,计算对应的返回值进行排序。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值