Java 8新特性:流和收集器问题示例
在Java 8中,引入了新的数据处理方式——流(Stream)和收集器(Collector)。下面我们将通过一个具体的例子来理解这些问题。
假设我们有一个列表,里面包含学生的姓名和分数:
List<Map<String, Object>> students =
Arrays.asList(
new HashMap<String, Object>() {
{"name", "Alice"};
{"score", 85};
},
new HashMap<String, Object>() {
{"name", "Bob"};
{"score", 92};
}
);
- 流(Stream):我们可以创建一个表示学生的姓名的流,这样我们就可以按名称进行操作:
Stream<Map<String, Object>> studentNames =
students.stream()
.map(map -> (String) map.get("name")));
- 收集器(Collector):在处理流时,我们可能会想要将结果汇总到一个地方。这时,我们可以选择一个收集器来完成这个任务:
Map<String, Integer> scoresByName =
studentNames.collect(Collectors.toMap(
name -> name,
score -> score,
Integer::sum // 使用默认的合并操作符
)));
以上例子展示了如何在Java 8中使用流和收集器来处理数据。
还没有评论,来说两句吧...