HashSet是Set集合下的一个子类,底层是哈希表结构。而Set集合的特点是元素是无序的,是不可重复的,所以hashSet中的元素也是无序的,不可重复的。往hashSet集合中添加相同元素,不是不显示,而是没有添加进去。它判断元素是否相同的依据是hashCode()方法和equals()方法。
而ArrayList底层结构是数组结构。因为List集合是有序的,是带有索引的,就如同在数组中可以添加相同元素一样。
至于在删除的时候,判断的依据还是hashCode()和equals() 方法。例如,要删除hashSet集合中的一个对象A,那么集合就会判断元素列表中哪一个元素和对象A相同。先根据hashCode()判断哈希值,若哈希值相同,则再判断equals()返回的结果是否为true,若是,则删除这个元素。
|