Java Stream 流处理 LIsit
// 排序规则列表
List sortRuleArray,
// 需要排序的列表
List<Map<String,Object>> needSortList
needSortList.stream().sorted(Comparator.comparing(e-> sortRuleArray.indexOf(e.get("pid").toString()))).collect(Collectors.toList());
// 排序类
Comparator.comparing(e-> sortRuleArray.indexOf(e.get("pid").toString()))
//列表中 map 的值在规则数组里的位置,按照此位置进行排序
e-> sortRuleArray.indexOf(e.get("pid").toString())
//实例代码
Class SortList{
public static void main(String[] args) {
ArrayList<String> objects = new ArrayList<>();
objects.add("a");
objects.add("b");
objects.add("c");
objects.add("e");
// 颠倒 list 顺序
Collections.reverse(objects);
ArrayList<Map<String,Object>> objects1 = new ArrayList<>();
HashMap<String, Object> objectObjectHashMap = new HashMap<>();
objectObjectHashMap.put("pid","c");
HashMap<String, Object> objectObjectHashMap2 = new HashMap<>();
objectObjectHashMap2.put("pid","b");
HashMap<String, Object> objectObjectHashMap3= new HashMap<>();
objectObjectHashMap3.put("pid","a");
HashMap<String, Object> objectObjectHashMap4= new HashMap<>();
objectObjectHashMap4.put("pid","e");
objects1.add(objectObjectHashMap4);
objects1.add(objectObjectHashMap);
objects1.add(objectObjectHashMap2);
objects1.add(objectObjectHashMap3);
List<Map<String,Object>> maps = sortResultOrderData(objects, objects1);
System.out.println("maps = " + maps);
}
private static List<Map<String,Object>> sortResultOrderData(List<String> sortRuleArray, List<Map<String,Object>> needSortList) {
return needSortList.stream().sorted(Comparator.comparing(e-> sortRuleArray.indexOf(e.get("pid").toString()))).collect(Collectors.toList());
}
}
调转 List 内的值的顺序
ArrayList<String> objects = new ArrayList<>();
objects.add("a");
objects.add("b");
objects.add("c");
objects.add("e");
// 颠倒 list 顺序
Collections.reverse(objects);