排序


Java Stream 流处理 LIsit值排序

// 排序规则列表
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());


    }


}


调转 List 内的值的顺序


        ArrayList objects = new ArrayList<>();
        objects.add("a");
        objects.add("b");
        objects.add("c");
        objects.add("e");
        // 颠倒 list 顺序
        Collections.reverse(objects);