- HashSet
1) HashSet不能够存储相同的元素,元素是否相同的判断:重写元素的equals方法。equals方法和hashCode方法必须兼容,如:equals方法判断的是用户的名字name,那么hashCode的返回的hashcode必须是name。hashcode();
2) HashSet存储是无序的,保存的顺序与添加的顺序是不一致的,它不是线性结构,而是散列结构,(通过散列表:散列单元指向链表)。因此,HashSet的查询效率相对比较高。
3) HashSet不是线程安全的,不是线程同步的。这需要自己实现线程同步:Collections.synchronizedCollection(),方法实现。
2.ArrayList
1) ArrayList中存放顺序和添加顺序是一致的。并且可重复元素。
2) 不是线程安全的,不是线程同步的。
3) ArrayList是通过可变大小的数组实现的,允许null在内的所有元素。
4) ArrayList适合通过位子来读取元素。
1)ArrayyList始终比HashSet性能要高
2) HashSet每次添加总要判断hashcode导致效率低
3) HashSet两种循环中iterator 方式不稳定,不过总是比foreach要快一点
Java中ArrayList和HashSet的区别
于 2022-04-05 17:34:17 首次发布