首先明确一点:HashSet,TreeSet都属于Set集合。HashSet的底层使用的数据结构是哈希表,TreeSet底层使用的是二叉树数据结构。对于SET结合,他里面的元素是无序的,也就是说想SET集合中存入对象的顺序和从SET集合中取出的顺序是不一定一致的,这是由于底层使用的数据结构不同。且Set集合中不允许元素存在重复。那么保证他不重复的原因是啥呢?-------两个方法hashCode()和equlas()
1,对于hashCode(),她返回的是对象的哈希值,可以通俗的理解这个哈希值就是对象在内存中的地址。如果两个对象的哈希值相同,那么你说这俩对象相同不相同呢?
2,对于equals()方法,她比较的也是对象的地址值是否相同,但是有时候根据需求,会复写equals方法,让其判断的内容与需求相同,例如在毕老师的视频中认为一个学生的年龄和姓名相同认为是同一个人,复写equals方法,作为第二个判断条件
另:在集合中只要是涉及底层数据结构式哈希表的都要复写hashCode()和equals()这两个方法。如有必要,还会复写toString()方法。谁让他们都是上帝的儿子呢?嘻嘻
希望能帮到您
|