Java ArrayList.removeAll(),但是对于索引

Azo*_*ger 4 java arraylist

有没有办法做这样的事情:

ArrayList<String>.removeAll(ArrayList<Integer>)
Run Code Online (Sandbox Code Playgroud)

随着ArrayList<Integer>我想删除的索引.我知道我可以遍历索引列表并使用remove(index),但我想知道是否有一个单命令方式这样做.

我知道如何把这个迭代放到一行,我的问题是,如果有一种方法由oracle实现.

rge*_*man 5

您可以使用a Stream来迭代索引以删除.但是,请注意首先移除最高指数,以避免移动其他元素以移除位置.

public void removeIndices(List<String> strings, List<Integer> indices)
{
     indices.stream()
         .sorted(Comparator.reverseOrder())
         .forEach(strings::remove);
}
Run Code Online (Sandbox Code Playgroud)

要从Strings 列表中删除,这将起作用,调用正确的remove(int)方法.如果您在a上尝试此操作List<Integer>,则必须在remove(E)调用.mapToInt(Integer::intValue)之前通过调用来避免调用forEach.