首页 > 解决方案 > 使用 Lambda java 8 验证和更改对象列表中的值

问题描述

Mood Pojo (nameOfMood, Score, Category)
Mood happyMood = new Mood("Happy", 10, POSITIVE);
Mood sadMood = new Mood("Sad", 1, NEGATIVE);
Mood confusedMood = new Mood("Confused", 6, NEGATIVE);
Mood irritatedMood = new Mood("Irritated", 5, NEGATIVE);
Mood blessedMood = new Mood("Blessed", 10, POSITIVE);

检查分数是否大于 5,将类别值更新为正面并将所有正面类别情绪获取到Map<String(nameOfMood), Mood>使用单行 lambda 或流函数

标签: javacollectionsjava-8java-stream

解决方案


如果您知道分数 < 5 肯定不会有积极的情绪。否则,您应该将分数低于 5 的人添加到此列表中。

List<Mood> mood = Arrays.asList(happyMood, sadMood, ...);
Map<String(nameOfMood), Mood> result =  mood.stream()
              .filter(e-> e.getScore() > 5)
              .peek(e-> e.setCategory("Positive"))
              .map(Collectors.toMap(e->e.nameOfMood(), e));


推荐阅读