1

我有一个 HashMap 数组,如果给定一个 HashMap 条目中的键,如何找到特定的 HashMap 条目?

例如,我有这个:

ArrayList<HashMap<String, String>> bathroomList = new ArrayList<HashMap<String, String>>();

我还知道我要查找的数组条目之一中的键:

String selectedKey = ((TextView) view.findViewById(R.id.key)).getText().toString();

如何迭代数组以找到它?

任何帮助表示赞赏。

4

2 回答 2

0

A map is a dictionary. For each key, it has one and only one entry. And there's no point in iterating over a map to find a key, since the whole point af a map is to be able to get the entry for a key in a single method call (O(1) for a HashMap):

String value = map.get(selectedKey)

will get you the value associated with selectedKey in the map.

于 2013-01-19T22:29:04.423 回答
0

您想要像常规 for 循环这样的东西来遍历 arraylist,然后只检查 null 您不能遍历 hashmap,但是如果您查找一个键并且它不存在,那么它只会返回 null。

ArrayList< HashMap< String, Object>> bathroomList; //this must be initialized.
public String getEntry(String key) {
    int count = bathroomList.length(); // this might be size i can never
                                        // remember
    String result = null;

    for (int i = 0; i < count; i++) {
        result = ((String) bathroomList[i].get(key));
        if (result != null) {
            break;
        }
    }
            if(result == null){
            result = "Key Not Found";
            }
     return result;   
}

编辑以映射哈希图。

public HashMap<String, String> getData(String key) {
    String[] hashmapKeys = {"key1", "key2", "key3"};
    if(key.equals("key1"){
        return bathroomList[0];
    }
        if(key.equals("key2"){
        return bathroomList[1];
    }
        if(key.equals("key3"){
        return bathroomList[2];
    }

}

我可以建议使用不同的数据结构。如果您已经知道您正在使用键映射事物,那么ArrayList< HashMap< String, String > >您可以使用 a而不是HashMap< String, HashMap<String, String>>

HashMap< String, HashMap<String, String>> bathroomList;

然后让你的数据集使用

HashMap<String, String>> dataSelected =浴室列表.get(selectedKey);`

大多数情况下,当您从列表中选择某些内容时,您将使用数组列表,因为您传入了用户单击的列表的位置。列表中的位置决定了无论如何选择了哪些数据。

于 2013-01-19T22:57:33.477 回答