本帖最后由 马镱洵 于 2012-9-8 14:57 编辑
凡是使用HashSet,HashMap,HashTable这三个容器,要放入这三个容器的对象所属的类必须要实现hashCode()方法和equals()方法.因为这三个容器是先判断放进来的对象的Hash码,如果Hash码不相同,那么就不会进行equals比较了,而是直接把对象存放进来了.你要知道,如果不重写hashCode()方法,每个对象的Hash码都不一样,所以你的代码中,虽然p1和p3两个对象的age属性都为21,但是p1和p3两个对象的Hash码却不一样,p1和p3当然可以同时放进你的容器中了. |