流式传输到新集合的集合

xen*_*ide 47 java java-8 java-stream

我正在寻找最无痛的方法来过滤集合.我在想类似的东西

Collection<?> foo = existingCollection.stream().filter( ... ). ...
Run Code Online (Sandbox Code Playgroud)

但我不确定如何最好从过滤器,返回或填充另一个集合.大多数例子似乎都像"在这里你可以打印".可能有一个我缺少的构造函数或输出方法.

Hol*_*ger 117

大多数例子都避免将结果存储到一个中,这是有原因的Collection.这不是推荐的编程方式.你已经有了一个Collection,提供源数据和集合的它本身没用.您希望对其执行某些操作,因此理想情况是使用流执行操作并跳过将数据存储在中间中Collection.这是大多数例子试图建议的.

当然,有很多现有的API与Collections 一起使用,并且总会如此.所以StreamAPI提供了不同的方法来处理a的需求Collection.


Sam*_*ane 6

java.util.stream的文档中的一个示例:

List<String>results =
     stream.filter(s -> pattern.matcher(s).matches())
           .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

Collectors有一个toCollection()方法,我建议这样看。