使用Java 8 Streams进行并发列表修改

时间:2016-05-19 10:36:15

标签: java java-8 java-stream

我有以下代码段。

List<String> list = ArrayUtils.asList("1", "2", "3", "4", "5");
List<Integer> indices = ArrayUtils.asList(1, 3, 4);
indices.stream().map(list::get).forEach(list::remove);

当我运行此代码时,我得到了

java.lang.IndexOutOfBoundsException: Index: 4, Size: 3

这是预期的,因为Java 8流是懒惰的。

我可以在.collect(...)之前构建像forEach之类的缩减操作,但我只是问自己是否有更优雅的方法来做这件事,或者我是否应该使用这样的流例。

修改:ArrayUtils.asList(...)模仿Arrays.asList(...),但会返回一个可变列表。

0 个答案:

没有答案