我有以下数据:
CustomClass first = new CustomClass(1, Arrays.asList(1, 2, 3));
CustomClass second = new CustomClass(5, Arrays.asList(6,7,8));
List<CustomClass> list = Arrays.asList(first, second);
现在我想将这些数据收集到一个列表中,该列表包含CustomClass
的值和列表中的值。
我想获得这个:1, 1, 2, 3, 5, 6, 7, 8
这是我实施的:
list.stream().forEach(item -> {
result.add(item.value);
item.values.stream().forEach(seconditem -> result.add(seconditem));
});
我知道有一个关于流的收集方法,但我不知道如何使用它来收集同一个类中的一个值和值列表。
答案 0 :(得分:21)
您可以使用Stream.concat
合并List<Integer> result = list.stream()
.flatMap(x -> Stream.concat(Stream.of(x.value), x.values.stream()))
.collect(Collectors.toList());
单个值和其他值的流:
<h:form id="transfer_list">
<ccs:criteriaPanel header="Critère de recherche"
filterAction="#{controller.filter()}">
<form:criteriaForm bean="#{controller.transferCriteria}"
rendered="#{! empty controller.transferSearchForm}"
mode="UPDATE"
controller="#{controller}" />
</ccs:criteriaPanel>
</h:form>