我有一堆索引,我想删除这些索引中的元素ArrayList.我不能做一个简单的remove()s 序列,因为元素在每次移除后都会移位.我该如何解决这个问题?
aio*_*obe 40
要删除元素indexes:
Collections.sort(indexes, Collections.reverseOrder());
for (int i : indexes)
strs.remove(i);
Run Code Online (Sandbox Code Playgroud)
或者,使用Java 8中的Stream API:
indexes.sort(Comparator.reverseOrder());
indexes.stream().mapToInt(i -> i).forEach(l::remove);
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 28
按降序对索引进行排序,然后逐个删除它们.如果这样做,删除将无法影响您以后要删除的任何索引.
如何对它们进行排序将取决于您用于存储索引的集合.如果是列表,您可以这样做:
List<Integer> indices;
Collections.sort(indices, new Comparator<Integer>() {
public int compare(Integer a, Integer b) {
//todo: handle null
return b.compareTo(a);
}
}
Run Code Online (Sandbox Code Playgroud)
@aioobe找到了我找不到的助手.而不是上述,你可以使用
Collections.sort(indices, Collections.reverseOrder());
Run Code Online (Sandbox Code Playgroud)
我来这里是为了删除特定范围内的元素(即,两个索引之间的所有元素),并发现了这一点:
list.subList(indexStart, indexEnd).clear()
Run Code Online (Sandbox Code Playgroud)