2011-09-05 47 views
8

我使用一列对用户名列表的唯一intid作为快速查找表,并决定使用sparseArray,但我希望能够打印到为了调试目的,不时记录整个列表。Android:是否有一个通过SparseArray迭代的习惯用法

的SparseArray不迭代,是不是很像util.Map接口

+0

类似的问题(与答案),可以发现在[此处](http://stackoverflow.com/questions/7999211/iterate-through-sparsearray/8006994#8006994) – Wasky

回答

4

使用SparseArray.size()获得总大小。

使用SparseArray.keyAt和valueAt获取给定索引中的键/值。

+2

实施例具有用于此解决方案的一些更多的解释这里:http://stackoverflow.com/a/8006994/579234 – Sogger

14

老鼠是正确的,代码看起来像这样;

for(int i = 0; i < sparseArray.size(); i++){ 
    int key = sparseArray.keyAt(i); 
    Object value = sparseArray.valueAt(i); 
} 
+1

更多关于这个解决方案的解释在这里的评论:http://stackoverflow.com/a/8006994/579234 – Sogger

0

以下是如何显示调试跟踪的SparseArray内容。

public static String sparseArrayToString(SparseArray<?> sparseArray) { 
    StringBuilder result = new StringBuilder(); 
    if (sparseArray == null) { 
     return "null"; 
    } 

    result.append('{'); 
    for (int i = 0; i < sparseArray.size(); i++) { 
     result.append(sparseArray.keyAt(i)); 
     result.append(" => "); 
     if (sparseArray.valueAt(i) == null) { 
      result.append("null"); 
     } else { 
      result.append(sparseArray.valueAt(i).toString()); 
     } 
     if(i < sparseArray.size() - 1) { 
      result.append(", "); 
     } 
    } 
    result.append('}'); 
    return result.toString(); 
} 
相关问题