从数组列表中删除多个元素
我有一堆索引,我想从中删除这些索引中的元素。我不能做一个简单的s序列,因为元素在每次删除后都会移动。我该如何解决这个问题?ArrayList
remove()
我有一堆索引,我想从中删除这些索引中的元素。我不能做一个简单的s序列,因为元素在每次删除后都会移动。我该如何解决这个问题?ArrayList
remove()
要删除 处的元素,请执行以下操作:indexes
Collections.sort(indexes, Collections.reverseOrder());
for (int i : indexes)
strs.remove(i);
或者,使用 Java 8 中的 Stream API:
indexes.sort(Comparator.reverseOrder());
indexes.stream().mapToInt(i -> i).forEach(l::remove);
按降序对索引进行排序,然后逐个删除它们。如果这样做,则删除不会影响以后要删除的任何索引。
如何对它们进行排序将取决于用于存储索引的集合。如果是列表,您可以执行以下操作:
List<Integer> indices;
Collections.sort(indices, new Comparator<Integer>() {
public int compare(Integer a, Integer b) {
//todo: handle null
return b.compareTo(a);
}
}
@aioobe找到了我未能找到的帮助者。而不是上述,您可以使用
Collections.sort(indices, Collections.reverseOrder());