将对象追加到列表并在Java 8中返回结果?

时间:2016-12-09 23:52:55

标签: java list java-8 java-stream

有没有办法将对象附加到列表中并以功能性非强制方式将结果返回到一行? 如果原始列表也不应该变异,你会怎么做? 允许使用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更好的了?

3 个答案:

答案 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);

简单,只有一行