java 替换列表内容或替换引用值本身

标签 java android

<分区>

我有一个列表,用于 Android 中 ListView 的适配器。

大多数时候,List 用于读取,但有时需要替换所有 List 内容。

以下哪种类型的代码(replaceListA、replaceListB)是首选?或另一种替换列表的方法?

提前致谢。

private ArrayList<Model> list = new ArrayList<Model>();

public synchronized void replaceListA(List newList) {
            list.clear();
            list.addAll(newList);
}

public synchronized void replaceListB(List newList) {
    list = newList;
}

最佳答案

一般来说,replaceListB可能会跑得更快,但是如果以后修改newListlist也会改变。例如:

ArrayList<Model> newList = new ArrayList<Model>();
replaceListB(newList);
newList.add( /*something*/ ); //This will update both newList and list

对比

ArrayList<Model> newList = new ArrayList<Model>();
replaceListA(newList);
newList.add( /*something*/ ); //This will only update newList

更具体地说,replaceListB 将在固定时间内运行,因为它只是更改一个指针,其中 replaceListA 必须复制单独列出,因此如果列表很大,则需要很长时间。但是,根据垃圾收集器的详细信息,replaceListA 可能会更快地释放内存。无论哪种方式,除非列表非常大,否则不太可能产生重大差异,因此我建议根据您是要制作列表的单独副本 (replaceListA) 还是允许编辑 ( replaceListB).

关于java 替换列表内容或替换引用值本身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25050210/

相关文章:

java - 有没有办法在java控制台中对扫雷游戏的行和列进行编号?

android - 在没有实际更改文本的情况下调用 afterTextChanged() 回调

android - fragment 重建后 ViewModel 不保留数据

java - 语法错误: Constructor call must be the first statement in a constructor

Android OpenGL : Bitmap. getHeight() > 实际高度

java - isDirectory 对于 svn 下文件夹上的 ant 任务返回 false

java - Jsoup 响应 : Every second sign is garbage (encoding issue? )

java - Android:在 `onClick` 事件上全屏显示带有标题的图像

java - 有没有办法隐藏ScrollView的滚动指示器?

java - Spring MVC 3.0 解析 JSON 中的项目类