日期:2014-05-20  浏览次数:20645 次

一个有关于java集合对象调用equals方法和compareTo方法的问题
前辈们,我刚学java不久,看到java集合时遇到一个问题:不明白当用put()方法向集合对象添加元素时,equals方法和compareTo方法是如何实现比较的(具体通过什么来调用这两个方法。我查看了TreeMap类中put()方法的源代码,没看到它调用了equals方法啊),不明白此时jvm如何运作。求解,谢谢
------解决方案--------------------
本身就不需要equals方法的。put方法中代码有这么一部分
parent = t;
cmp = cpr.compare(key, t.key);
if (cmp < 0)
                    t = t.left;
else if (cmp > 0)
                    t = t.right;
else
                    return t.setValue(value);
意思很明显,如果key和已经存在的key不相同,就根据大小排序,如果相同,就直接替换。你可以查看setValue方法。