我有以下代码段。
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(...)
,但会返回一个可变列表。