1

私はハッシュマップタイプの配列リストを持っています:

public static ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();

次のような ID と名前があります。

ここに画像の説明を入力

これは、ループするために使用されるコードです。

for (HashMap<String, String> map : mylist)
    for (Entry<String, String> entry : map.entrySet())
        if(entry.getValue().contains(typedText)){
            map1 = new HashMap<String, String>();
            map1.put("id", entry.getKey());
            map1.put("name",  entry.getValue());
            mylist1.add(map1);
        }

問題は、次の行にあります。

for (Entry<String, String> entry : map.entrySet())

map.entrySet()次のように、正しい ID と名前が表示されます。

ここに画像の説明を入力

ただし、'entry' で使用できるのは Name のみです。

ここに画像の説明を入力

entry.getKey()キーである「name」というテキストを常に返し、entry.getValue()値である「Katie Bailey」を返します。

私の質問は、なぜ entry.getKey() でキーを取得できないのですか? 各反復で常に「名前」をキーとして取得するのはなぜですか?

4

2 に答える 2

0

問題は、マップがキーに対して一意の値しか取得しないため、キーがマップに存在する場合、マップに再挿入できないため、最初に一致する値を取得することになります。

さらに言えば、代用する別のキーを提供する必要があります。キーに「id」や「name」などの文字列を使用すると、キーは変更されず、値も変更されます。

Java HashMap APIを参照

于 2013-09-11T06:21:06.450 に答える