java容器有哪些:
Collection和Map,其中Collection是单列,Map是双列;单列下的具体有Set\List,多列下有Map接口。
List接口中的实现类特点:
ArrayList:底层用数组实现,查询效率高,插入效率低,线程不安全。
LinkedLis:t底层用双向链表实现,查询效率低,插入效率高,线程不安全。
Vector:底层用长度可动态增长的对象数组实现,该实现的相关方法用了同步关键字,所以线程安全但效率低下。
Stack:继承自Vector,特点先进后出。
Set接口中实现类特点:
HashSet:底层用HashMap实现,本质就是Map中没有bucket。查询效率和增删效率都很高,
LinkedHashSet:继承自HashSet,内部使用了LinkHashMap,好处就是LinkedHashSet中的元素是有序的。
TreeSet:内部用TreeMap实现,底层是一种二叉查找数,需要对元素做内部排序,因此存储的兑现要实现Comparable接口且不能传入null。
Map接口中实现类的特点:
HashMap:采用散列算法实现,底层用哈希表来存储数据,hashMap在查找删除修改效率都很高,允许key或value为null。
LinkedHashMap:继承自HashMap,是HashMap和双向链表的组合,他是一个将所有entry节点都链入双向链表的HashMap,迭代顺序可以是插入顺序也可以是访问顺序,默认是按照插入顺序排序的。
HashTable:与HashMap类似不同点就是其中的方法用了同步关键字确保安全但效率低,不允许key或value为null。
TreeMap:是在Map中按照自然排序时才选用TreeMap
ConcurrentHashMap:线程安全