ContainsValue 与 equals 方法 TreeMap
ContainsValue vs equals method TreeMap
我想打印从扫描仪对象到达这里的选定键和值。我以这种方式尝试过,我注意到了不同:
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 一样给我真假。
提前谢谢你。
根据您的编辑,您将值放在不同的地图 archivio
中并尝试在不同的地图 oldbooks
.
中搜索它
这是故意的吗?或者这可能是您的代码中的问题!
下面的代码对我来说工作正常;
TreeMap<String, String> oldbooks = new TreeMap<>();
oldbooks.put("WaltDisney", "DonaldDuck");
oldbooks.put("Shakespeare", "Amleto");
oldbooks.put("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);
}
}
当我在我的 IDE 中 运行 时,我只需在控制台中键入 DonaldDuck
即可获得预期结果(打印所有键值对)。
此外,仅供参考,您一直在 system.out.print 语句中打印不正确的键值。
键是 k
,值是您使用 oldbooks.get(k)
得到的值。不是相反。 (正如第一条评论中@dan1st 所指出的)。
我想打印从扫描仪对象到达这里的选定键和值。我以这种方式尝试过,我注意到了不同:
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 一样给我真假。 提前谢谢你。
根据您的编辑,您将值放在不同的地图 archivio
中并尝试在不同的地图 oldbooks
.
这是故意的吗?或者这可能是您的代码中的问题!
下面的代码对我来说工作正常;
TreeMap<String, String> oldbooks = new TreeMap<>();
oldbooks.put("WaltDisney", "DonaldDuck");
oldbooks.put("Shakespeare", "Amleto");
oldbooks.put("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);
}
}
当我在我的 IDE 中 运行 时,我只需在控制台中键入 DonaldDuck
即可获得预期结果(打印所有键值对)。
此外,仅供参考,您一直在 system.out.print 语句中打印不正确的键值。
键是 k
,值是您使用 oldbooks.get(k)
得到的值。不是相反。 (正如第一条评论中@dan1st 所指出的)。