从数组列表中删除多个元素

2022-09-01 02:15:43

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


答案 1

要删除 处的元素,请执行以下操作: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);

答案 2

按降序对索引进行排序,然后逐个删除它们。如果这样做,则删除不会影响以后要删除的任何索引。

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

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

推荐