我使用一列對用戶名列表的唯一intid作爲快速查找表,並決定使用sparseArray,但我希望能夠打印到爲了調試目的,不時記錄整個列表。Android:是否有一個通過SparseArray迭代的習慣用法
的SparseArray不迭代,是不是很像util.Map接口
我使用一列對用戶名列表的唯一intid作爲快速查找表,並決定使用sparseArray,但我希望能夠打印到爲了調試目的,不時記錄整個列表。Android:是否有一個通過SparseArray迭代的習慣用法
的SparseArray不迭代,是不是很像util.Map接口
使用SparseArray.size()獲得總大小。
使用SparseArray.keyAt和valueAt獲取給定索引中的鍵/值。
實施例具有用於此解決方案的一些更多的解釋這裏:http://stackoverflow.com/a/8006994/579234 – Sogger
老鼠是正確的,代碼看起來像這樣;
for(int i = 0; i < sparseArray.size(); i++){
int key = sparseArray.keyAt(i);
Object value = sparseArray.valueAt(i);
}
更多關於這個解決方案的解釋在這裏的評論:http://stackoverflow.com/a/8006994/579234 – Sogger
以下是如何顯示調試跟蹤的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();
}
類似的問題(與答案),可以發現在[此處](http://stackoverflow.com/questions/7999211/iterate-through-sparsearray/8006994#8006994) – Wasky