2

以下に、最初のマルチマップに 2 つのエントリを追加し、2 番目のマルチマップに 1 つのエントリを追加して、2 つを比較するコードをいくつか示します。キーは同じ "Dec" (出力を参照) であるため、false を出力するのはなぜですか?

入力

    Multimap<String, String> first = ArrayListMultimap.create();
    Multimap<String, String> second = ArrayListMultimap.create();
    first.put("Dec", "18");
    first.put("Dec", "12");
    second.put("Dec", "18");
    for (String key : second.keys()) {
            System.out.println(first.get(key));
        System.out.println(second.get(key));
        System.out.println(first.containsEntry(key, second.get(key)));
    }

出力

    [18, 12]
    [18]
    false

編集: 以下の答えを理解していない人のために、 second.get(key) は文字列のコレクション (1 つだけではありますが) と、もちろん文字列のコレクション =/= string を返します。

4

1 に答える 1

6

"Dec"のキーと「だけを含むコレクション」の値を持つエントリを探しています"18"。そのエントリは、またはのいずれにも存在しませんfirstsecond

今あなたが使用する場合:

System.out.println(first.containsEntry("Dec", "18"));

それから私はそれ印刷されることを期待していますtrue。基本的に、個々のエントリ値と「キーに関連付けられたエントリ値のコレクション」を区別する必要があります。

于 2013-02-06T18:35:06.763 に答える