1

HashMap の配列があります。HashMap エントリの 1 つにあるキーを指定して、特定の HashMap エントリを見つける方法を教えてください。

たとえば、私はこれを持っています:

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

また、検索したい配列エントリの 1 つに含まれるキーも知っています。

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

配列を反復処理して見つけるにはどうすればよいですか?

どんな助けでも感謝します。

4

2 に答える 2

0

地図は辞書です。キーごとに、エントリは1つだけです。また、マップを反復処理してキーを見つける意味はありません。マップのポイント全体が、単一のメソッド呼び出し(HashMapの場合はO(1))でキーのエントリを取得できるためです。

String value = map.get(selectedKey)

マップで関連付けられている値を取得しますselectedKey

于 2013-01-19T22:29:04.423 に答える
0

通常の for ループのようなものが arraylist を反復処理してから、null をチェックしたい場合 ハッシュマップを反復処理することはできませんが、キーを探してもそこにない場合は 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 > >使用できますHashMap< String, HashMap<String, String>>

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

次に、データセットを使用する

HashMap<String, String>> dataSelected =bathroomList.get(selectedKey);`

ユーザーがクリックしたリストの位置を渡すため、ほとんどの場合、リストから何かを選択するときに arraylist を使用します。リスト内の位置は、どのデータが選択されたかを決定するものです。

于 2013-01-19T22:57:33.477 に答える