Java集合相关问题

List,Set,Map区别

Collections框架延伸

Map延伸

描述

  • List(顺序):List接口存储一组不唯一(可以多个元素引用相同对象),有序的对象。
  • Set(注重独一无二):元素不可重复,不会多个元素引用相同对象。
  • Map(Key来搜索):键值对存储。Map会维护与Key有关联的值,两个Key可以引用相同的对象,Key不可重复。

ArrayList和LinkedList区别

  1. 是否保证线程安全:ArrayList 和LinkedList都是不同步的,线程不安全。
  2. 底层数据结构:ArrayList底层用的Object数组;LinkedList底层使用双向链表数据结构(JDK1.6之前为循环链表,JDK1.7取消循环)
    1. 插入和删除是否受元素位置影响:
      1. ArrayList采用数组存储,所以插入和删除元素时间复杂度收到元素位置影响。add(E e),会把元素追加到列表末尾,O(1);若在指定i处插入或删除,(add(int index,E element)),O(n-i),因为在进行操作时候,集合中第i和第i个元素之后的(n-i)个元素都要执行向后/向前移一位的操作。
      2. LinkedList采用链表存储,碎玉add(E e)方法插入删除,时间复杂度都近似O(1),如果要在指定位置i插入和删除元素,O(n)。

ArrayList扩容机制

HashMap和Hashtable区别

HashMap和HashSet区别

HashSet如何检查重复

HashMap底层实现原理

为何HashMap长度是2的幂次方

HashMap多线程死循环问题

ConcurrentHashMap和HashTable的区别

ConcurrentHashMap线程安全的原理

comparable和Compatator的区别

总结

Collection

Map