2013-02-06 52 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()具有相同的想法。 –