如何使用stream转换下面的代码而不使用for each循环。
列表
。所有列表应合并为列表
。列表
映射
对象模型:
Subject
id,....
List<Topic>
Topic
id,name
public Map<String, String> getSubjectIdAndName(final String subjectId) {
List<Subject> list = getAllSubjects(); // api method returns all subjects
//NEEDS TO IMPROVE CODE USING STREAMS
list = list.stream().filter(e -> e.getId().equals(subjectId)).collect(Collectors.toList());
List<Topic> topicList = new ArrayList<>();
for (Subject s : list) {
List<Topic> tlist = s.getTopics();
topicList.addAll(tlist);
}
return topicList.stream().collect(Collectors.toMap(Topic::getId, Topic::getName));
}
请在此处使用flatmap
以不再进行流式处理。请注意,这个tomap
假定不会有重复键(或空键)
list.stream()
.filter(e -> subjectId.equals(e.getId()))
.flatMap(subject -> subject.getTopics().stream())
.collect(Collectors.toMap(Topic::getId, Topic::getName));
我有一个lambda表达式,我想在其中创建一个对象列表,但我得到了错误 错误 我希望作为lambda表达式的返回类型。我怎样才能做到呢?
我有一个类,有多个成员。 还有一个类,只有两个属性: 我需要遍历类中的各种列表,并创建类对象,并添加到这样的列表中: 这里重复了if和for循环。 如何使用Java流实现这一点? 注意:类,和之间没有关系,也没有公共接口。
我正在查看的文档,我看到了方法,但无法直接转到 是否有方法将转换为?
我正在尝试将列表拆分为列表列表,其中每个列表的最大大小为4。 我想知道如何使用lambdas做到这一点。 目前我的做法如下: 更新 似乎没有一种简单的方法可以使用lambdas来拆分列表。虽然所有的答案都很受欢迎,但它们也是一个很好的例子,说明lambdas不能简化事情。
问题内容: 假设我有一个元组列表,并且我想转换为多个列表。 例如,元组列表是 Python中是否有任何内置函数可以将其转换为: 这可以是一个简单的程序。但是我只是对Python中存在这种内置函数感到好奇。 问题答案: 内置功能几乎可以满足您的需求: 唯一的区别是您得到元组而不是列表。您可以使用将它们转换为列表
问题内容: 我已经编写了此函数,用于将元组列表转换为列表列表。有没有更优雅的/ Pythonic的方式来做到这一点? 问题答案: 您可以使用列表推导: