在Java中,我正在实现这个:
Scored [Profile]
Scored [Applicability]
我想显示包含单词" Scored"像这样:
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}}
提前感谢。
答案 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。它认为它是一样的。因此过度写入值。