集合转换Stream流式操作
生活随笔
收集整理的這篇文章主要介紹了
集合转换Stream流式操作
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
List集合中對(duì)象轉(zhuǎn)map
public class QuestionDto {/*** choice_question pid*/@PrimaryKeyprivate String id;/*** 順序*/@Min(0)private Integer sort;...}所涉及的代碼
Map<String, Integer> collect = list.stream().filter(e -> e.getSort() != null).collect(Collectors.toMap(QuestionDto::getId, QuestionDto::getSort));所涉及的service層全部代碼
@Transactional(rollbackFor = Exception.class)public void updateQuestionSort(String chapterId, List<QuestionDto> list) {List<String> questionPidList = list.stream().map(QuestionDto::getId).collect(Collectors.toList());//獲取課程章節(jié)相關(guān)的習(xí)題List<CourseStepQuestion> exercisesOfChapterList =courseChapterQuestionRepository.findAllByChapterPidAndQuestionPidIn(chapterId, questionPidList);if (Integer.compare(list.size(), exercisesOfChapterList.size()) != 0) {throw new BusinessException("course.chapter.exercises.NotMatching.message");}Map<String, Integer> collect = list.stream().filter(e -> e.getSort() != null).collect(Collectors.toMap(QuestionDto::getId, QuestionDto::getSort));exercisesOfChapterList.forEach(e -> {e.setQuestionSort(collect.get(e.getQuestionPid()));});courseChapterQuestionRepository.saveAll(exercisesOfChapterList);}第二種也是涉及集合轉(zhuǎn)換
@Transactional(readOnly = true)public List<ChoiceQstDto> findExercisesOfChapter(String chapterId, String relation) {List<CourseStepQuestion> exercisesOfChapterList= courseChapterQuestionRepository.findByChapterPidOrderByCreateTimeDesc(chapterId);List<String> exercisesIdOfChapterList= exercisesOfChapterList.stream().map(CourseStepQuestion::getQuestionPid).collect(Collectors.toList());if (relation.equals(ASSOCIATION)) {// 獲取本節(jié)課程關(guān)聯(lián)的練習(xí)題Map<String, Integer> collect = exercisesOfChapterList.stream().collect(Collectors.toMap(CourseStepQuestion::getQuestionPid, CourseStepQuestion::getQuestionSort));List<ChoiceQuestion> choiceQuestionList = choiceQuestionRepository.findAllById(exercisesIdOfChapterList);return choiceQuestionList.stream().map(e -> new ChapterChoiceQstDto(e.getPid(), e.getTitle(), e.getQuestionType(),e.getContent(), e.getAnswer(), e.getOptions(), collect.get(e.getPid()))).collect(Collectors.toList());}// 默認(rèn)獲取本節(jié)課程不關(guān)聯(lián)的練習(xí)題List<ChoiceQuestion> choiceQuestionList = choiceQuestionRepository.findByPidNotIn(exercisesIdOfChapterList);return choiceQuestionList.stream().map(e -> new ChapterChoiceQstDto(e.getPid(), e.getTitle(), e.getQuestionType(), e.getContent(), e.getAnswer(), e.getOptions())).collect(Collectors.toList());} CourseChapterQuestionRepository: List<CourseStepQuestion> findByChapterPidOrderByCreateTimeDesc(String chapterId);總結(jié)
以上是生活随笔為你收集整理的集合转换Stream流式操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 查询七天之内所有生日的客户
- 下一篇: jdk 5 到 jdk 10各个版本的新