8

如图所示,在一次运行一个方法后,我想删除旧项目,并为下一次计算做准备,但我想知道如何从指定的索引开始删除数组列表中的元素,如队列,遵守 FIFO 算法? q1

4

3 回答 3

15

您可以使用List#subList(int, int)

List<Integer> list =  ...
list = list.subList(10, list.size()); // creates a new list from the old starting from the 10th element

或者,由于subList创建了一个每次修改都会影响原始列表的视图,这可能会更好:

List<Integer> list = ...
list.subList(0, 10).clear(); // clears the first 10 elements of list
于 2013-09-02T21:05:00.803 回答
1

只需为此使用remove()方法。

假设您要删除索引从 20 到 30 的元素ArrayList

ArrayList<String> list = ...
for (int i = 0; i < 10; i++) { // 30 - 20 = 10
  list.remove(20);
}

20删除index 处的第一个元素后,元素21将移动到 index 20。因此,您必须删除索引处的元素 10 次20才能删除接下来的 10 个元素。

于 2013-09-02T20:56:26.193 回答
0

由于您没有编写高性能应用程序,因此在索引变量中存储如此多的语义是一种不好的风格。

更好的方法是使用地图。

例如。Map<Item, Integer> itemStockMap<Item, Double> prices。然后,您也不会对删除操作有任何问题。

于 2013-09-02T21:02:29.387 回答