本文沒有對stream效率和原理的探究,只是一些具體的用法範例。
1.遍歷 foreach
entityList.stream().forEach(System.out::println);
2.map,entityList 轉為 map<Long,String> id -> name
Map<Long, String> groupNameMap = groupEntityList.stream().collect(Collectors.toMap(QuestionGroupEntity::getId, QuestionGroupEntity::getGroupName));
3.groupingBy-分組,entityList 轉為 map<Long,List> typeId -> List
Map<Long, List<QuestionDTO>> map = dtoList.stream().collect(Collectors.groupingBy(QuestionDTO::getTypeId));
4.filter-篩選指定條件的集合
dtoList.stream().filter(d -> currentIdSet.contains(d.getId())).collect(Collectors.toList())
5.limit
entityList.stream().limit(2).collect(Collectors.toList());
6.sorted 排序
Comparator.comparing(AnswerDTO::getShowNo)是使用排序器指定具體按什麼欄位排序(正序-從小到大)
answerDTOList = answerDTOList.stream().sorted(Comparator.comparing(AnswerDTO::getShowNo)).collect(Collectors.toList());
reversed()是倒序
answerDTOList = answerDTOList.stream().sorted(Comparator.comparing(AnswerDTO::getShowNo).reversed()).collect(Collectors.toList());
7.返回值的問題
最後是個使用提醒,使用stream對流進行操作後除非是直接return,否則必須
list = list.stream()...
newList = list.stream()...
list.stream()...;
// 類似作用域問題,list還是原來的沒變化
return list;