如何获取密钥取决于HashMap的值

时间:2015-07-06 10:07:38

标签: java

我在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;
    }

但是这个功能不起作用。有什么不对吗?

1 个答案:

答案 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;
}