2013-02-06 53 views
2

下面我有一些代碼添加兩個條目到第一個multimap和單個條目到第二個,然後比較這兩個。由於鍵是相同的「Dec」(請參閱​​輸出),爲什麼它會輸出false?番石榴Multimap containsEntry問題

輸入

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(鍵)將返回字符串的集合(儘管只有一個)當然是一個字符串集合=/=字符串

回答

6

您正在尋找一個關鍵字爲"Dec"的條目,其值爲「僅包含的集合210「。該條目不存在存在於firstsecond中。

現在,如果你使用:

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

然後我想到的是打印true。基本上,您需要區分單個輸入值和「與鍵關聯的輸入值的集合」。

+0

沒有'Iterables.first'這樣的方法。 –

+0

啊,當然。我不能相信我忽略了這一點。 –

+0

@LouisWasserman,second.get(key).iterator()。next()具有相同的想法。 –