昨天接到一个电话面试,有问道关于集合类的知识,刚好我自己对于这方面梳理的结构不是特别好,想要写一篇博客来总结关于这方面的内容。
1.List:
a.ArrayList底层是用动态数组实现的,我个人比较喜欢用,取值的效率比较好
b.LinkedList底层是基于链表实现的,对于一些经常增删的程序比较适合
2.set
a.TreeSet:基于TreeMap实现,插入的时候插入的只有key,调用的是map.put()
插入时会自动排序,iterator()返回的是升序的迭代器
descendingIterator()返回的是降序迭代器
subSet()返回子集
b.HashSet基于HashMap实现,查重十分方便,输出不定序 contains(Object ob)函数查重
3.map:在容器中的每一项都是一个Map.Entry<K,V>
a.HashMap:基于散列表实现(也就是每一项是链表的数组),插入查询开销小,不是线程安全的(HashTable是但是遗留类,ConcurrentHashMap是线程安全的)
b.TreeMap:基于红黑树实现,得到的结果key经过排序
c.LinkedHashMap:基于链表的链表实现,迭代访问时速度较快