父接口collection
子接口list
单列集合
有序,允许重复,允许存null
实现类arraylist
单列集合
有序,允许重复,允许存null
底层数组,不安全
实现类linkedlist
单列集合
有序,允许重复,允许存null
底层链表(双向链表),不安全
实现类vector
底层数组,与arraylist的功能基本一样
list常用实现类的区别
arraylist底层是数组,可以通过下标直接定位到对应的元素所以查询更新的效率高,删除插入效率低,不保证线程安全
linkedlist底层是链表,在内存中不是连续的空间,虽然有下标,但是还是需要遍历整个链表去找对应的元素,所以查询更新效率低,插入删除效率高
vector:线程安全,效率低
array和arraylist的区别
array(数组)长度不可变,当数据超过容量大小时,会出现下标越界异常
arraylist(集合)会自动扩容,一般是1.5倍
子接口set
单列集合
没有定义有序无序,具体看实现类,不允许重复
实现类hashset
无序,不允许重复,允许存null
底层是hashmap,哈希表结构,不安全
实现类treeset
自然顺序,不允许重复,不允许null
底层是treemap,不安全
hashset的子类linkedhashset
是hashset的一个子类和hashset的方法一样,但是保证迭代顺序
map
双列集合,双列集合的根接口,键值对应,不能有重复键,但能有重复值
子接口hashmap
无序,不重复键,重复值,允许null值null键
底层基于哈希表实现,不安全
子接口treemap
有序,不重复键,重复值,不允许null键,可以null值
底层红黑树,不安全
hashtable
双列集合,不允许null键,null值,安全效率低
concurrenthashmap
线程安全效率高;比hashmap安全,比hashtable效率高
hashtable和hashmap的区别
1.hashtable同步,hashmap不同步
2.hashmap允许null值null键,hashtable不允许