set的定位的确是无序的且不能重复,这点没有疑问。但是set集合实现唯一性是依靠调用对象本身的hashcode()以及equals()方法,(楼上equals不小心拼错了)。毕老师的视频里,因为Object类自带hashcode()以及equals()方法,所以person类如果没有重写这两个方法,就继承了Object类中的方法。而Object类中的hashcode()方法是这样定义的public native int hashCode();这是调用系统底层的hash算法,依照它的算法即使姓名和年龄相同,哈希值也不同。所以要实现唯一性,一般我们都要重写hashcode()以及equals()方法。方法的具体实现视频里有。 |