我有一个类别为A
的对象,定义如下:
class A {
private Set<String> sOne;
private Set<String> sTwo;
// Constructor, getters and setters
}
现在,我想创建一个包含sOne
和stwo
元素的流。在Java 8中有办法吗?
答案 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>>
的流,否则这需要弄平结构。