【发布时间】:2016-04-02 02:47:49
【问题描述】:
我从A 班级返回一个列表。我想从列表中删除第一个元素并将其作为最后一个元素添加到同一个列表中。我是这样做的。
myList.add(myList.get(0));
myList.remove(0);
目标硬件是 Android 操作系统。我应该以返回ArrayList 或LinkedList 的方式对A 类进行编码吗?对于以下情况,哪个会更好:
myList 总是有 100 个元素
myList 总是有 10 个元素
也许我看到了一个没有问题的地方。您认为在这种情况下我不应该关心性能,因为问题规模(对于 1 和 2)都很小?
我知道“过早的优化是万恶之源”的说法。这就是为什么我在更改我的实现之前犹豫不决(就目前而言,我的A 对象返回一个 ArrayList)。
【问题讨论】:
-
如果您经常添加/删除/更新元素,请使用
LinkedList。 -
premature optimisation is the root of all evil的座右铭是废话。 -
如果您只添加和删除第一个和最后一个元素,LinkedList 非常适合,因为它包含指向第一个和最后一个节点的指针。
-
@Fantômas 选择正确的集合不是过早的优化,它只是一个好的编程(选择错误的集合是非常糟糕的编程)。过早的优化通常会降低代码的可读性,以换取假设的和未经测试的理论速度提升,甚至可能不需要它。
-
@BillK 我确实喜欢过早的优化。所以,我的观点和你的观点。两所不同的学校。
标签: java android performance arraylist linked-list