如何从Map <string,list <string =“”>&gt;获取Specifics值?

时间:2017-05-25 13:16:45

标签: java list

在Java中,我正在实现这个:

Scored [Profile]
Scored [Applicability]

我想显示包含单词&#34; Scored&#34;像这样:

entry.getkey()

但是如何搜索if(entry.getKey().contrains("Scored"))

因为它不适用于:Map<String, List<String >> mdaps = new HashMap<String, List<String >>(); List<String > List1 = new ArrayList<String>(); List<String > List2 = new ArrayList<String>(); List<String > List3 = new ArrayList<String>(); List1.add("Profile"); List2.add("Applicability"); List3.add("Level 1"); mdaps.put("(Scored)", List1 ); mdaps.put("(Scored)", List2 ); mdaps.put("Not Scored", List3 ); for(Map.Entry<String, List<String>> entry : mdaps.entrySet()){ if(entry.getKey().contains("(Scored)")) // not Working System.out.println(entry.getKey()+" "+ entry.getValue()); } }

这是我的代码: EDIT1

{{1}}

DemoProgramm

提前感谢。

3 个答案:

答案 0 :(得分:1)

entry.getKey()将返回一个包含密钥的集合,因此它将始终返回true。

for (Map.Entry<String, List<String>> entry : mdaps.entrySet()) {

            if (entry.getKey().equals("Scored")) // not Working
                System.out.println(entry.getKey() + " " + entry.getValue());
        }

答案 1 :(得分:0)

解决方案是用以下内容替换禁区:

for (Map.Entry<String, List<String>> entry : mdaps.entrySet()) {

            if (entry.getKey().contains("(Scored)")) 
                System.out.println(entry.getKey() + " " + entry.getValue());
        }

答案 2 :(得分:0)

你正在写关键的价值&#34;(得分)&#34;再次使用相同的密钥。所以List1没有在sysout中显示。您不应该为不同的值使用相同的键。 HashMap使用key的hasCode()来存储值,具有相同值的String将具有相同的hascode。它认为它是一样的。因此过度写入值。