【发布时间】:2019-12-14 09:41:33
【问题描述】:
我想打印从扫描仪对象到达这里的选定键和值。我以这种方式尝试过,我发现了一个不同之处:
TreeMap<String, String> oldbooks = new TreeMap<String,String>();
oldbooks.put("WaltDisney", "DonaldDuck");
oldbooks.put("Shakespeare", "Amleto");
oldbooksput("Dickens", "OliverTwist");
Scanner in = new Scanner(System.in);
String title = in.next();
boolean found = oldbooks.containsValue(title);
for(String k : oldbooks.keySet())
{
if(found) {
System.out.print("The value is : "+ oldbooks.get(k)
+" The Key is: "+ k);
}
}
我注意到,通过这种方式,我获得了每个键和每个值,我想要正确的键和正确的值。如果我改变我的 if 条件并输入:
if(title.equals(oldbooks.get(k))
现在它运行得很好。那么为什么我不能用第一个解决方案打印指定的值和键呢?我知道 .equals 给了我真假,就像 containsValue 一样。 提前谢谢你。
【问题讨论】:
-
您弄错了示例代码中的键和值。
-
但是为什么我不能在 containsValue 中打印任何内容?
-
因为地图不包含标题(作为值!)
-
顺便说一句,我会遍历
oldbooks.entrySet()。 -
@dan1st 标题是我从扫描仪对象获得的字符串。如果我只是将“TheManintheMoon”放在标题位置,我将一无所获。我试着理解你的意思,标题是一个不在地图中的字符串,但在 if 条件中是相同的 (title.equals(oldbook.get(k)) 或者我忘记了什么?提前谢谢你
标签: java dictionary collections key treemap