Android: есть идиома для перебора SparseArray - PullRequest
8 голосов
/ 05 сентября 2011

Я использую список уникальных идентификаторов int для списка имен пользователей в качестве таблицы быстрого просмотра и решил использовать sparseArray, но я хотел бы иметь возможность печати, чтобы время от времени регистрировать весь список для целей отладки ,

SparseArray не повторяется и не очень похож на интерфейс util.Map

Ответы [ 3 ]

15 голосов
/ 30 июля 2012

Мыши были верны, код будет выглядеть примерно так;

for(int i = 0; i < sparseArray.size(); i++){
    int key = sparseArray.keyAt(i);
    Object value = sparseArray.valueAt(i);
}
4 голосов
/ 14 ноября 2011

Используйте SparseArray.size () для получения общего размера.

Используйте SparseArray.keyAt и valueAt для получения ключа / значения в данном индексе.

0 голосов
/ 14 августа 2012

Вот как отобразить содержимое 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();
}
...