Integer totalOrderCount = orderCountList.stream().reduce(Integer::sum).get();
List<String> names = salesTop10.stream().map(GoodsSalesDTO::getName).collect(Collectors.toList());
的区别?
这两行代码都使用了 Java 8 中的 Stream API,但是它们的作用和结果略有不同:
-
Integer totalOrderCount = orderCountList.stream().reduce(Integer::sum).get();
:- 这行代码首先将
orderCountList
转换为一个流(Stream)。 - 然后使用
reduce
操作将流中的元素进行聚合。在这里,使用了Integer::sum
方法来对流中的所有元素求和。 - 最后调用
get()
方法获取聚合后的结果,因为reduce
方法返回的是一个Optional
对象,所以需要调用get()
方法来获取其中的值。 - 最终,
totalOrderCount
变量保存了orderCountList
中所有元素的总和。
- 这行代码首先将
-
List<String> names = salesTop10.stream().map(GoodsSalesDTO::getName).collect(Collectors.toList());
:- 这行代码首先将
salesTop10
转换为一个流(Stream)。 - 然后使用
map
操作将流中的每个元素映射为另一个值。在这里,使用了GoodsSalesDTO::getName
方法来从每个GoodsSalesDTO
对象中提取名称。 - 接着使用
collect
操作将映射后的结果收集到一个列表中。在这里,使用了Collectors.toList()
方法将流中的元素收集到一个列表中。 - 最终,
names
变量保存了salesTop10
中每个GoodsSalesDTO
对象的名称组成的列表。
- 这行代码首先将
因此,第一行代码计算了一个整数列表中所有元素的总和,而第二行代码则从一个对象列表中提取了每个对象的名称,并将这些名称存储在一个新的列表中。两者的主要区别在于它们所操作的数据类型和所执行的操作。