9

ユーザー名のリストに対して一意の int id のリストを高速ルックアップ テーブルとして使用しており、sparseArray を使用することにしましたが、デバッグ目的で時々リスト全体をログに記録できるようにしたいと考えています。

SparseArray は反復可能ではなく、util.Map インターフェイスとはあまり似ていません。

4

3 に答える 3

16

マウスは正しく、コードは次のようになります。

for(int i = 0; i < sparseArray.size(); i++){
    int key = sparseArray.keyAt(i);
    Object value = sparseArray.valueAt(i);
}
于 2012-07-30T17:39:07.660 に答える
4

SparseArray.size() を使用して合計サイズを取得します。

SparseArray.keyAt と valueAt を使用して、特定のインデックスのキー/値を取得します。

于 2011-11-14T12:01:19.123 に答える
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();
}
于 2012-08-14T05:56:19.797 に答える