1. 程式人生 > >[java]java8 Stream 基本使用

[java]java8 Stream 基本使用

   List<IdNameEntity> lists = new ArrayList<>();
        lists.add(new IdNameEntity(8, "王一"));
        lists.add(new IdNameEntity(5, "李二"));
        lists.add(new IdNameEntity(7, "張三"));
        lists.add(new IdNameEntity(7, "趙四"));
        //使用普通方式解決
        Map<Integer ,List<IdNameEntity>> map = new HashMap<>();
        lists.forEach((temp) -> {
            if (map.containsKey(temp.getId())){
                map.get(temp.getId()).add(temp);
            }else {
                List<IdNameEntity> list = new ArrayList<>();
                list.add(temp);
                map.put(temp.getId(),list);
            }
        });
        //java8 Stream  過濾和分組
        Map<Integer, List<IdNameEntity>> collect = lists.stream().filter(temp -> temp.getId() > 5)
                .collect(Collectors.groupingBy(IdNameEntity::getId));
        //list 轉為 map  注意 key不可以 重複
        Map<String, IdNameEntity> collect = lists.stream().collect(Collectors.toMap(IdNameEntity::getName, IdNameEntity -> IdNameEntity));
        lists.stream().map(temp -> temp.getId() * 2).collect(Collectors.toList());
    

常用的 groupingby 進行分組
filter 進行過濾
map reduce 進行函數語言程式設計
轉換map list set
sorted 排序