由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 为什么不能直接比较java hashMap get 的值?
相关主题
不要对烙印有一丝好感求点评:电话面试(今天第二天没有消息回复,感觉可能挂了)
HashMap这样写对吗?问个关于排序的面试题
求帮忙解答一个面试算法题==问道cc150上的题
求leetcode LRU Java 解法这种牛逼的写法是实现Map接口的匿名内部类吗?
问道题,谁给个效率高点的解法Google电面被拒,郁闷中
一个实际碰到的问题请问strcpy()和memcpy()的写法问题
Java的hashcode和equal函数有什么用?gg面试题
请教个面试题一道算法题
相关话题的讨论汇总
话题: char话题: map话题: get话题: integer话题: true
进入JobHunting版参与讨论
1 (共1页)
f********e
发帖数: 100
1
如果把值打印出来,明明就相等, 为啥这个if statement 就是true?
if(s_map.containsKey(s_char) && (s_map.get(s_char) != t_map.get(
t_char)))
{
System.out.println(s_map.get(s_char) != t_map.get(t_char));
System.out.println("i = " + i + ", s_map.get(s_char) = " + s
_map.get(s_char) + " , t_map.get(t_char) = " + t_map.get(t_char));
return false;
}
----------------------------output-------------
true
i = 223, s_map.get(s_char) = 128 , t_map.get(t_char) = 128
g*****g
发帖数: 34805
2
println is calling toString and compare is calling equals, check equals to
see why it's different.

get(
s

【在 f********e 的大作中提到】
: 如果把值打印出来,明明就相等, 为啥这个if statement 就是true?
: if(s_map.containsKey(s_char) && (s_map.get(s_char) != t_map.get(
: t_char)))
: {
: System.out.println(s_map.get(s_char) != t_map.get(t_char));
: System.out.println("i = " + i + ", s_map.get(s_char) = " + s
: _map.get(s_char) + " , t_map.get(t_char) = " + t_map.get(t_char));
: return false;
: }
: ----------------------------output-------------

f********e
发帖数: 100
3
原来如此。谢了

【在 g*****g 的大作中提到】
: println is calling toString and compare is calling equals, check equals to
: see why it's different.
:
: get(
: s

w**z
发帖数: 8232
4
Java 里 != 是比较 memory reference. 如果你用 != 在 object 上, 99.99%的情况
下,你用错了。应该用equals.

get(
s

【在 f********e 的大作中提到】
: 如果把值打印出来,明明就相等, 为啥这个if statement 就是true?
: if(s_map.containsKey(s_char) && (s_map.get(s_char) != t_map.get(
: t_char)))
: {
: System.out.println(s_map.get(s_char) != t_map.get(t_char));
: System.out.println("i = " + i + ", s_map.get(s_char) = " + s
: _map.get(s_char) + " , t_map.get(t_char) = " + t_map.get(t_char));
: return false;
: }
: ----------------------------output-------------

S**********n
发帖数: 250
5
你的map 是 HashMap
Integer 和 int是不一样的
map.get(s_char) == 128 // true 正确写法
map.get(s_char).equals(map.get(t_char)) // true, 正确写法
map.get(s_char) == map.get(t_char) // 有时候true,有时候false;错误写法

get(
s

【在 f********e 的大作中提到】
: 如果把值打印出来,明明就相等, 为啥这个if statement 就是true?
: if(s_map.containsKey(s_char) && (s_map.get(s_char) != t_map.get(
: t_char)))
: {
: System.out.println(s_map.get(s_char) != t_map.get(t_char));
: System.out.println("i = " + i + ", s_map.get(s_char) = " + s
: _map.get(s_char) + " , t_map.get(t_char) = " + t_map.get(t_char));
: return false;
: }
: ----------------------------output-------------

P******r
发帖数: 1342
6
2楼不对,== 的 比较不调 equals。
5楼是对的,HashMap里面必然是用Integer而不是int。所以用==可能会有问题
g*******e
发帖数: 107
7
Integer 是对象,下面比较的是两个对象的reference address, 是不同的。
map.get(s_char) != map.get(t_char)
println 会invoke Integer 对象 toString() method,
toString() return a String object representing this Integer's value
所以打印的值是相同的。

【在 S**********n 的大作中提到】
: 你的map 是 HashMap
: Integer 和 int是不一样的
: map.get(s_char) == 128 // true 正确写法
: map.get(s_char).equals(map.get(t_char)) // true, 正确写法
: map.get(s_char) == map.get(t_char) // 有时候true,有时候false;错误写法
:
: get(
: s

f********e
发帖数: 100
8
嗯, 谢谢。
是Integer, 不是int.被java 的auto boxing 彻底搞晕了。

【在 g*******e 的大作中提到】
: Integer 是对象,下面比较的是两个对象的reference address, 是不同的。
: map.get(s_char) != map.get(t_char)
: println 会invoke Integer 对象 toString() method,
: toString() return a String object representing this Integer's value
: 所以打印的值是相同的。

i*****h
发帖数: 1534
9
楼上的答案都是错的,建议楼主去看看基础
z****e
发帖数: 54598
10

下面的输出结果是什么?
int a = 3, b = 3;
Integer aa = new Integer(3), bb = new Integer(3);
Integer cc = aa;
System.out.println(a==b);
System.out.println(aa==bb);
System.out.println(aa==cc);
System.out.println(aa.equals(bb));
System.out.println(aa.equals(cc));
System.out.println(aa.equals(a));
System.out.println(aa==a);

【在 f********e 的大作中提到】
: 嗯, 谢谢。
: 是Integer, 不是int.被java 的auto boxing 彻底搞晕了。

1 (共1页)
进入JobHunting版参与讨论
相关主题
一道算法题问道题,谁给个效率高点的解法
amazon 一道题一个实际碰到的问题
Google 2 phone interviews exposed + 求祝福Java的hashcode和equal函数有什么用?
google 面试题疑问请教个面试题
不要对烙印有一丝好感求点评:电话面试(今天第二天没有消息回复,感觉可能挂了)
HashMap这样写对吗?问个关于排序的面试题
求帮忙解答一个面试算法题==问道cc150上的题
求leetcode LRU Java 解法这种牛逼的写法是实现Map接口的匿名内部类吗?
相关话题的讨论汇总
话题: char话题: map话题: get话题: integer话题: true