LinkedList的方法与ArraryList的方法一模一样
LinkedList添加了removeFirst(),removeLast()两个方法
HashSet的方法与去掉ArraryList的方法中针对下标操作的方法之后的其他方法一模一样
LinkedHashSet的方法与HashSet的方法一模一样
TreeSet的方法与HashSet及其方法一模一样
LinkedHashMap、ConcurrentHashMap的方法在使用层面和HashMap的方法没有区别
TreeMap的方法在使用层面和HashMap的方法没有区别
HashSet底层是由HashMap实现的。
TreeSet底层是由TreeMap实现的。
LinkedHashset底层是由LinkedHashMap和实现的。
HashSet存储数据后,存入数据的顺序与取出数据的顺序不一致,并且会去重
LinkedHashSet存储数据后,存入数据的顺序与取出数据的顺序一致,并且会去重
TreeSet存储数据后,String类(字典排序)、包装类(数字升序排序),自然排序,并且会去重(底层是二叉树),内置比较器,外置比较器
Set接口下所有的实现类只可以获取Iterator迭代器
List接口下所有的实现类可以获取Iterator迭代器和ListIterator迭代器
LinkedList实现类获取迭代器与ArraryList 实现类一模一样
HashSet实现类获取Iterator迭代器与ArraryList 实现类获取Iterator迭代器一模一样
LinkedHashSet实现类获取Iterator迭代器与ArraryList 实现类获取Iterator迭代器一模一样
TreeSet实现类获取Iterator迭代器与ArraryList 实现类获取Iterator迭代器一模一样
ArrayList 与 LinkedList的区别
使用上的区别:
LinkedList添加了removeFirst(),removeLast()两个方法
队列模式-先进先出(removeFirst())
栈模式-先进后出(removeLast())
效率上的区别:由于ArrayList底层数据结构是一维数组,LinkedList底层数据结构是双向链表
添加 - 不扩容的情况:ArrayList快
添加 - 扩容的情况:LinkedList快
删除:LinkedList快
修改:ArrayList快
查询:ArrayList快
注意:工作中常用ArrayList,因为很多需求都需要使用查询功能,ArrayList查询更快
应用场景:
HashMap:存key+value,key去重,无序,线程不安全的,单线程用,可以存储null键null值
LinkedHashMap:存key+value,key去重,有序,线程不安全的,单线程用,可以存储null键null值
Hashtable(已弃用):存key+value,key去重,无序,线程安全的(方法上加锁,效率低),多线程用,不可以存储null键null值
ConcurrentHashMap:存key+value,key去重,无序,线程安全的(局部加锁,CAS-效率高),多线程用,不可以存储null键null值
HashMap底层
JDK1.7版本HashMap的底层数据结构是什么?
JDK1.8版本HashMap的底层数据结构是什么?
JDK1.8HashMap单向链表为什么大于8就转为二叉树?
HashMap的初始化容量是多少?
HashMap何时扩容?
HashMap的扩容机制
HashMap的容量为什么必须是2的幂?
HashMap底层中的数组最大值是多少?
HashMap底层中的数组最大值为什么是1<<30?
什么是Hash表?
什么是Hash桶?
什么是hash碰撞?
HashMap默认负载因子是多少?
负载因子有什么用
HashMap默认负载因子为什么是0.75?
HashMap存入元素的步骤
使用HashMap需要注意什么?
hash种子数的含义及作用?
HashMap存放null键的位置在哪?
hash回环/死循环是什么情况下造成的?
JDK1.8的HashMap有哪些改进?