需求 针对于接收的字符串 或者其他参数 ,进行 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中获取对应的传入顺序,计算对应的返回值进行排序。