Android:有没有通过SparseArray迭代的习惯用法

时间:2011-09-05 06:50:55

标签: android idioms sparse-array

我在一个用户名列表中使用一个唯一int id列表作为快速查找表并决定使用sparseArray但我希望能够打印以不时记录整个列表以进行调试。

SparseArray不可迭代,与util.Map接口不太相似

3 个答案:

答案 0 :(得分:15)

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

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

答案 1 :(得分:4)

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

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

答案 2 :(得分: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();
}