- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我有类似的东西:
ArrayList<Data> mList = new ArrayList();
...
public void setList(ArrayList<Data> list) {
mList = list;
}
public void updateList(ArrayList<Data> list) {
mList.clear();
mList.addAll(list);
}
哪个更有效率,setList()
或updateList()
为什么?最佳实践是什么?
编辑:
不要与 this 混淆问题。
最佳答案
两者之间存在巨大的概念差异。
您的setList()
获取对列表的引用;并更改您的 mList ...以指向该引用。
而您的 updateList()
将传入列表中的所有引用复制到现有的 mList 对象中。
含义:与 updateList() 相比,setList() 确实需要更少的 CPU 操作...但关键是:现在可以从类外部更改 mList。就像:
List someList = ...
yourClass.setList(someList);
someList.clear();
也会清除“你的”mList;但是
List someList = ...
yourClass.updateList(someList);
someList.clear();
将不会影响您的“mList”。
这是您应该注意的主要区别。
性能实际上并不是这里真正需要关心的问题!
一般来说:不必太担心性能。因为:无论如何你都不会做对。例如,JIT 编译器将天真的假设颠倒过来。
长话短说:关注操作的语义;不要将自己限制在“性能”方面。
关于java - Android列表(ArrayList、List等): addAll() vs redefining reference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37549285/
Java API docs say以下关于Collections.addAll The behavior of this convenience method is identical to that
我的代码没有编译,我不太清楚为什么。这是代码: ArrayList classifications = productData .stream()
我对此有点困惑,所以希望能提供一些说明。 public void addAll(List animals) 对比 public void addAll(List animals) 最佳答案 区别在于
每当调用 Collection#addAll 时,它都会创建参数列表的副本,然后将其附加到调用 addAll 的集合。 下面是案例一的代码: if (parentData != 0)
对不起标题,但我不知道如何更好地解释它! 假设我在 Java 中有这个类: public class ToyClass { public int number; } 还有一个名为 ToyCla
我必须将 PaginatedQueryList 添加到来自 dynamoDbMapper.query 的 secondList 以进行测试。我怎样才能实现它? List exampleList = s
如果尝试向阻塞队列添加超过阻塞队列剩余大小的集合,会发生什么?从我目前阅读的文档中并不清楚这一点。 LinkedBlockingQueue foo = new LinkedBlockingQ
在一个方法中,我进行了两次调用。第一个调用从另一个方法构造并返回一个哈希集。第二次调用将这个新构造的集合添加到现有集合中,并作为参数传递给此方法。 public static void someMet
所以我的目标是用从 1 到 x 部分的 y 个随机数填充 arraty,然后计算每个数字重复的次数并打印它。这是代码: int counter = 1; int length = random
我目前正在学习泛型,我有一个任务,我必须创建一个带有 T 类型参数和数组数据成员以及一些方法(setItem、getItem、visitor、condition 和 addAll)的 Array 类。
我正在尝试制作一个创建棋盘的 javafx 程序。但是,当我尝试运行我的程序时,它会在这一行中抛出异常:optionsPane.getChildren().addAll(optionsPane, n_
java.util.Collections 中 addAll 方法的实现只是循环遍历源集合,并为源集合中的每个元素调用接收集合的 add 方法。 因此,如果接收集合的容量很小并且我们要向其中添加许多元
下面的代码用于 ListView 的搜索过滤器。每次更改 tbSearch editText 中的文本时, ListView 中的项目也必须更改。执行进入 if 语句 (txt.length()==0
我正在尝试查找字符串中唯一字符的数量。解决方案必须尽可能高效(时间复杂度 O(N);非常大的数组;一般来说是大 O)。我决定这样做(如果您有更好的解决方案请告诉我)。唯一的问题是,当我尝试运行它时,它
Map> mapp = new HashMap>(); HashSet set1 = new HashSet(); set1.add("a"); HashSet set2 = new HashSet(
import java.util.*; public class MyClass { public static void main(String[] args) { List a = n
我刚刚开始接触 java 和 android。 下面是我的代码,用于在 Activity 中添加所有按钮然后隐藏它们。问题:无论如何,他们是否会自动添加 Activity 中的所有按钮,而不必列出每个
为什么我在执行以下代码时遇到异常。 String[] array1 = {"A","B","C","D","E"}; String[] array2 = {"F","G","H","I"};
如果我想将一个列表添加到另一个列表,我调用 target.adAll(source)。 但是如果我需要先处理列表中的每个值怎么办? 我可以做类似的事情 for(String s: source) {
最近在List.addAll中发现了一个使用流的代码片段,但是我看不出为什么要使用它。 所以给出一个简单的列表。 List subList作为参数传递给方法。有一个是另一个,它是一个字段并且包含相同类
我是一名优秀的程序员,十分优秀!