如何使用java8获取字符串列表?

时间:2017-04-28 10:05:45

标签: java java-8 java-stream

我在列表中有一个列表有很多对象。每个对象都选择日期作为字符串列表。现在我想要列表中selectedDates的所有对象。我试过,但它显示以下错误。请帮帮我。 错误:

WEEK_PROD   EMPLOYEE ITEM TOTAL_QTY   PERC
----------- -------- ---- ----------- ---------------------------------------
1           ANA      A    9           36.0000000000000
1           ANA      B    16          64.0000000000000
1           CAROL    A    8           33.3333333333300
1           CAROL    B    16          66.6666666666600

代码:

Type mismatch: cannot convert from List<List<String>> to List<String>

豆:

PlacesListExperienceCartItem expList = cartItemListRepo.save(experienceListCart);

List<String> selectedDateList = expList.getExperienceList()
                    .stream()
                    .map(PlacesExperienceCartConfirmRequest::getSelectedDates)
                    .collect(Collectors.toList());

1 个答案:

答案 0 :(得分:4)

您需要.flatMap而不是.map

List<String> selectedDateList = expList.getExperienceList()
                    .stream()
                    .flatMap(a -> a.getSelectedDates().stream())
                    .collect(Collectors.toList());

.map方法将函数应用于流的每个元素,即 - &gt;中的一个对象。一个(不同的)对象

.flatMap方法将流的每个元素转换为新的元素流(在您的情况下是List的元素),因此 - &gt;中的一个对象多个对象。这些新流的所有元素构成.flatMap返回的流。

here已在评论中指出,可以找到更详尽的解释Holger