java8 stream?


有2个疑问?

1:不要修改在执行某项流操作后会将元素返回到流中的集合。所有的集合不都是对他进行某项流操作后就会将元素返回到流中吗?

2:流不会收集他们的数据,数据总是在单独的集合中。上面第一条写明对集合进行某项修改操作后会将元素返回到流中,这个不是有点矛盾,流不存储数据怎么集合在被流操作修改后还能返回元素到流中?

3:第一张图说如果修改了这样的集合流操作的结果就是未定义的,对应到图2,这个forEach为啥不能这样写?为啥修改集合了流操作结果就是未定义的?

回答

首先,你可以把流处理当成是某种查询工具,查询工具本身并不会改变集合中的数据,只是根据你的查询条件(具体的流处理,e.g:filter、groupBy etc.)返回你要的结果集。
其次,且不说你foreach的写法少了{}会造成编译错误,遍历的时候直接remove也会因为index问题造成空指针,你如果只是为了拿到大于等于12的结果集,干嘛不用这种

List<String> result = list.stream().filter(t-> t.length() >=12).collect(Collectors.toList());

以上是 java8 stream? 的全部内容, 来源链接: utcz.com/a/38394.html

回到顶部