https://mp.weixin.qq.com/s?__biz=MzI2NjA3NTc4Ng==&mid=2652079766&idx=1&sn=879783e0b0ebf11bf1a5767933d4e61f&chksm=f1748d73c6030465fe6b9b3fa7fc816d4704c91bfe46cb287aefccee459153d3287172d91d23&scene=21#wechat_redirect
Map 和 Collection
HashMap: 允许 key-value (null-null)、线程不安全,底层由 数组+链表/红黑树 组成
HashTable: 不允许 (null-null)、线程安全,每个方法上都加有syncronize锁
CurrentHashMap: 用来取代HashTable,性能优于HashTable
ArrayList和Vector的区别
a) Vector是线程同步的,所有它也是线程安全的,而ArrayList是线程异步的,是不安全的。如果不考虑到线程的安全因数,一般用ArrayList效率比较高。
ArrayList和LinkedList的区别
a) ArrayList是实现了基于动态数组的数据结构,LinkedList是基于链表的数据结构
b) 对于随机访问get和set,ArryList要优于LinkedList,因为LinkedList要移动指针
c) 对于新增和删除操作add和remove,linkedList比较占优势,因为ArrayList要移动数据。这一点要看实际情况,如果只对单条数据插入或删除,ArrayList的速度反而优于LinkedList。但批量随机插入,则考虑LinkedList。因为ArrayList每插入一条数据,要移动插入点及之后的所有数据
d) 是一个有序容器,保持了每个元素的插入顺序
Set 集合的特性
a) 无序,不重复
b) LinkedHashSet按照元素的插入顺序对它们进行存储
Collection和Collections的区别:
a) Java..util.Collection是一个接口(集合顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在java类库中有很多集合的实现,其直接继承collection接口有List和Set
b) Collections则是集合类的一个工具类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索及线程安全等操作。