为什么removeif()在集合流中不可用

时间:2019-06-20 03:52:33

标签: java java-8 java-stream

我在removeif()上看到ArrayList,但是当我做stream()时,没有选择。是因为removeif()更改了集合的大小并且流需要一个固定的大小才能工作?

2 个答案:

答案 0 :(得分:2)

要从流中删除元素,可以使用.filter(e -> e.getId() == 4) 。示例:

removeif()
  

是因为foreach($data as $obj) { echo $obj->data_; } 更改了集合的大小并且流需要一个固定的大小才能工作?

不,实际上流甚至可以处理无限多个对象

答案 1 :(得分:0)

Stream不会更改源集合,stream会从sorce(可能是集合,无限生成器)中获取元素,然后在映射的每个步骤将它们通过链(转换,过滤)传递,这将是一个新对象,然后收集结果中传递的内容(可能是集合,联接的字符串或Integer),并在变量中返回结果。它提供了声明式的样式和不变性,可以在多线程计算中做很多工作而没有副作用。