其中哪个更有效? :
ArrayList<Integer> list = new ArrayList<Integer>();
for(int a : list){
log.i(tag, a + "");
}
SparseIntArray list2 = new SparseIntArray();
int count = list2.size();
for(int j = 0; j < count; j++) {
log.i(tag, list2.get(j) + "");
}
或者,是否有更快的方法来读取列表的内容?
最佳答案
在这种情况下,效率是无关紧要的,因为这两者做的事情完全不同。
我认为您意识到您的ArrayList
示例会遍历array-list的所有元素。
您没有意识到的是,您的SparseIntArray
示例并未遍历sparse-integer-array的所有元素,因为sparse-integer-array的键的范围从零到array-size-minus-一。而是,其键是任意整数。稀疏整数数组在HashMap<Integer, Integer>
方面与ArrayList<Integer>
在接口方面共有很多共同之处。
(顺便说一下,这与软件设计的一般规则有关:正确的代码总比有效的代码好。您始终可以获取正确,干净的代码并找到提高其性能的方法;但是很难采用快速,错误的代码,并找到正确的方法。)