【问题标题】:Android: Is there an idiom for Iterating through a SparseArrayAndroid:是否有通过 SparseArray 进行迭代的习语
【发布时间】:2011-11-10 09:43:14
【问题描述】:

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

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

【问题讨论】:

  • 类似问题(附答案)可以在here找到

标签: android idioms sparse-array


【解决方案1】:

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

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

【讨论】:

【解决方案2】:

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

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

【讨论】:

【解决方案3】:

下面介绍了如何为调试跟踪显示 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();
}

【讨论】:

    猜你喜欢
    • 2010-12-05
    • 1970-01-01
    • 2021-04-12
    • 2013-07-01
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    相关资源
    最近更新 更多