循环效率比较

rex*_*rex 1 performance android loops arraylist

哪个更有效?:

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) + "");
}
Run Code Online (Sandbox Code Playgroud)

或者,是否有更快的方式来读取列表的内容?

rua*_*akh 15

在这种情况下,效率是无关紧要的,因为这两者完全不同.

我想你意识到你的ArrayList例子遍历了数组列表的所有元素.

你不知道的是,你的SparseIntArray例子并不能透过稀疏的整数数组中的所有元素进行迭代,因为稀疏整数数组的键都不会从零到数组大小减一的范围.相反,它的键是任意整数.稀疏整数阵列具有共同的,界面明智为多,与HashMap<Integer, Integer>作为带ArrayList<Integer>.

(这,顺便说一下,涉及到软件设计的一般规律:它是更好地为你的代码是正确的效率您可以随时采取正确的,干净的代码并想方设法提高其性能,但它是非常难以接受.快速,错误的代码,并找到使其正确的方法.)