将 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 许可协议

阅读 504
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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题