我在Java(命名队列)中有HashMap
,其中Integer
为密钥,List
为消息,作为与每个密钥相关的值。我想访问List<messages>
的所有值,并将每个条目与我将其提供给函数foo(Message m)
的特定值进行比较。如果输入的值等于HashMap的值,则获取此值的键并将其存储在列表中。这是我的功能:
public static List<Integer> getKey(Message m,MessageList m1)
{
List<Integer> l = new ArrayList<Integer>();
for(Map.Entry<Integer, List<Message>> entry:m1.queue.entrySet()) {
if(m.equals(entry.getValue())) {
l.add(entry.getKey());
}
}
return l;
}
但是这个功能不起作用。有什么不对吗?
答案 0 :(得分:1)
值为List<Message>
类型,但您将其与单个Message
进行比较。使用List::contains
:
public static List<Integer> getKey(Message m,MessageList m1)
{
List<Integer> l = new ArrayList<Integer>();
for(Map.Entry<Integer, List<Message>> entry:m1.queue.entrySet()) {
if(entry.getValue != null && entry.getValue().contains(m)) {
l.add(entry.getKey());
}
}
return l;
}