力扣160题,范例里有相同的1,为什么不是相交的节点

力扣160题,范例里有相同的1,为什么不是相交的节点
解题方法也是看有没有出现过同样的节点来判断是不是相交

img

Java对象比较的是对象的地址,类似于c++的指针。而listnode的val成员变量比较的是整数的值。简单说,就是一个比较地址,一个比较地址内存储的值。这样能明白吗?

比较的是listnode对象而不是listnode的值val,所以虽然两个节点的值都是1,但是真正相交的是val为8的那个节点listnode。也就是visited.contains包含的那个对象。有帮助请采纳,谢谢!

值一样并不代表是同一个对象,就像两个人都叫张三,但是它们却不是同一个人。java是面向对象的,除了原始数据类型,其他对象类的判断要通过equals()方法判断是不是同一个对象,contains()内部就是调用了equals()。