发布于2022-06-24 17:03 阅读(450) 评论(0) 点赞(29) 收藏(2)
我有一个方法可以每 5 秒迭代一个大数组。在每个循环中,我添加一些东西到ArrayList
.
我听说使用new
需要更多内存。
我需要知道上面清空/清除的最佳方法是什么ArrayList
。
private ArrayList<MyMarker> myArray;
public void callEveryFiveSeconds(){
myArray = new ArrayList<MyMarker>(); //clears previous array data
//grab array data from server
for (int i = 0; i < 200; i++) {
myArray.add(someData);
}
}
或者
private ArrayList<MyMarker> myArray = new ArrayList<MyMarker>();
public void callEveryFiveSeconds(){
myArray = null; //clears previous array data
//grab array data from server
for (int i = 0; i < 200; i++) {
myArray.add(someData);
}
}
第二个代码是错误的,会抛出 NullPointerException。
如果要清除列表:
public void callEveryFiveSeconds(){
myArray.clear();
//grab array data from server
for (int i = 0; i < 200; i++) {
myArray.add(someData);
}
}
至于哪个选项更好 - 创建一个新ArrayList
实例或清除现有实例 - 后者应该占用更少的内存,因为它不必为 new 分配一个新数组ArrayList
。前者将分配一个ArrayList
新数组和一个新数组,而旧数组ArrayList
将有资格进行垃圾收集。这意味着第二个选项(清除列表)将为垃圾收集器节省工作,这在性能方面也是一件好事。
callEveryFiveSeconds
如果在每次调用中添加到列表中的元素数量保持相似,则清除现有列表而不是每次都创建新列表还有另一个好处。这样做的原因是,在ArrayList
不指定初始容量的情况下创建一个新的列表会创建一个初始容量较小的列表,并且如果向新列表中添加许多元素,则必须多次调整其大小,这也需要时间。
作者:黑洞官方问答小能手
链接:http://www.javaheidong.com/blog/article/463672/b8817e7dce673ef0286c/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!