// 排序规则列表 List sortRuleArray, // 需要排序的列表 List> 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 objects = new ArrayList<>(); objects.add("a"); objects.add("b"); objects.add("c"); objects.add("e"); // 颠倒 list 顺序 Collections.reverse(objects); ArrayList> objects1 = new ArrayList<>(); HashMap objectObjectHashMap = new HashMap<>(); objectObjectHashMap.put("pid","c"); HashMap objectObjectHashMap2 = new HashMap<>(); objectObjectHashMap2.put("pid","b"); HashMap objectObjectHashMap3= new HashMap<>(); objectObjectHashMap3.put("pid","a"); HashMap objectObjectHashMap4= new HashMap<>(); objectObjectHashMap4.put("pid","e"); objects1.add(objectObjectHashMap4); objects1.add(objectObjectHashMap); objects1.add(objectObjectHashMap2); objects1.add(objectObjectHashMap3); List> maps = sortResultOrderData(objects, objects1); System.out.println("maps = " + maps); } private static List> sortResultOrderData(List sortRuleArray, List> needSortList) { return needSortList.stream().sorted(Comparator.comparing(e-> sortRuleArray.indexOf(e.get("pid").toString()))).collect(Collectors.toList()); } }
ArrayList objects = new ArrayList<>(); objects.add("a"); objects.add("b"); objects.add("c"); objects.add("e"); // 颠倒 list 顺序 Collections.reverse(objects);