将数组列表收缩到新大小

2022-08-31 13:48:21

我真的需要自己实现它吗?

private void shrinkListTo(ArrayList<Result> list, int newSize) {
  for (int i = list.size() - 1; i >= newSize; --i)
  list.remove(i);
}

答案 1

创建一个包含要删除的元素范围的子列表,然后对返回的列表调用 clear

list.subList(23, 45).clear()

这种方法在 ListArrayList 的文档中都作为一个成语提到。


这是一个经过全面单元测试的代码示例!

// limit yourHappyList to ten items
int k = yourHappyList.size();
if ( k > 10 )
    yourHappyList.subList(10, k).clear();
    // sic k, not k-1

答案 2

或者,您可以使用 subList 方法:

public static <T> List<T> shrinkTo(List<T> list, int newSize) {
    return list.subList(0, newSize - 1);
}

推荐