将 ArrayList 缩小到新的大小

新手上路,请多包涵

我真的需要自己实施吗?

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

原文由 ripper234 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 541
2 个回答

创建一个包含您希望删除的元素范围的子列表,然后在返回的列表上调用 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

原文由 mP. 发布,翻译遵循 CC BY-SA 3.0 许可协议

或者你可以使用 subList 方法:

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

原文由 dfa 发布,翻译遵循 CC BY-SA 2.5 许可协议

推荐问题