从Java中的同一对象联接2个流

时间:2019-07-10 08:54:23

标签: java java-8 java-stream

我有一个类别为A的对象,定义如下:

class A {
    private Set<String> sOne;
    private Set<String> sTwo;
    // Constructor, getters and setters
}

现在,我想创建一个包含sOnestwo元素的流。在Java 8中有办法吗?

3 个答案:

答案 0 :(得分:5)

Stream.concat(sOne.stream(), sTwo.stream())

您应该注意,在某些情况下,这会降低一些IIRC特性。

答案 1 :(得分:5)

您可以使用以下方法将它们组合在一起:

List<A> aList = ...;

Stream<String> stream = aList.stream()
                             .flatMap(a -> Stream.concat(
                                      a.getsOne().stream(), 
                                      a.getsTwo().stream())
                              );

答案 2 :(得分:1)

已经提到的Stream::concat的替代方法是Stream::of

Stream.of(sOne.stream(), sTwo.stream())
      .flatMap(Function.identity())
      ...

除非您希望使用Stream<Stream<T>>或任何集合Stream<Collection<T>>的流,否则这需要弄平结构。