从ArrayList中删除多个元素


问题内容

我有一堆索引,我想从中删除这些索引中的元素ArrayList。我无法做一个简单的remove()s 序列,因为每次移除后元素都会移动。我该如何解决?


问题答案:

按降序对索引进行排序,然后将其一一删除。如果这样做,删除将不会影响以后要删除的任何索引。

如何对它们进行排序将取决于您用来存储索引的集合。如果是列表,则可以执行以下操作:

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());