有没有办法将对象附加到列表中并以功能性非强制方式将结果返回到一行? 如果原始列表也不应该变异,你会怎么做? 允许使用Java 8.
我已经知道如何在一行中连接两个列表。 (Source)
List listAB = Stream.concat(listA.stream(), listB.stream()).collect(Collectors.toList());
我也知道如何用一行中的对象制作一个列表。
List listO1 = Collections.singletonList(objectA);
List listO2 = Stream.of(objectA, objectB).collect(Collectors.toList());
List listOO = Arrays.asList(objectA, objectB);
有没有什么比用以下几行中的一部分替换第一行中的listB
更好的了?
答案 0 :(得分:11)
您可以使用
List<Foo> newList =
Stream.concat(list.stream(), Stream.of(fooToAdd))
.collect(Collectors.toList());
我发现这有点令人费解。力求可读性,而不是寻找单线,更模糊的解决方案。另外,永远不要像你在问题中那样使用原始类型。
答案 1 :(得分:1)
您可以使用var args
并从中创建stream
以附加到实际stream
的{{1}},例如:
list
答案 2 :(得分:0)
有没有办法将对象附加到列表并将结果返回到一行?如果原始列表不应该突变,你会怎么做?
List<Foo> newList = new ArrayList<>(list); newList.add(fooToAdd);
简单,只有一行。