java容器主要有两大类:collection和map;

collection又可以根据子类分为两大类List和set;

  1. List集合特征:有序可重复;允许元素为null;实现Collection接口;增删慢查询快;list常用的子类为Victor、ArrayList、linkedList三种;
  • victor底层为数组结构,线程安全、初始长度为10,扩容后每次增长为2倍,目前已被ArrayLis取代;
  • ArrayList底层为数组结构、非线程安全的、初始长度为10,扩容后每次增长为1.5倍,增删的时候需要数组的拷贝与复制,增删慢查询快;
  • LinkedList底层为双向链表,非线程安全的,查询慢增删快;

   2.set集合的特征:无须不可重复;实现Collection接口;常见的子类有HashSet、TreeSet、LinkedHashSet;

  • TreeSet底层是一个TreeMap(红黑树  不太了解),元素不允许为null;非线程安全;
  • HashSet底层为一个hash表和红黑树,元素可为null;非线程安全的;
  • LinkedHashSet底层就是一个hash表和双向链表组成,父类为HashSet,元素可为null;非线程安全的;

   3.Map集合:键值对的形式存在;主要子类有HashMap、TreeMap、LinkedHashMap等;

  • HashMap底层为红黑树和散列表组成,取代了HashTable,可以允许键值均为null,hashTabe的键值均不能为null,hashMap为非线程安全的,hashTable为线程安全的,HashMap的初始长度为16;
  • linkedHashMap底层为红黑树加双向链表和散列表,初始长度为16,非同步的,有序插入;

散列表和红黑树:
散列表就是Hash表,根据不同的hash值挂载在数组中,如果hash值相同时,用value和数组链表的对象比对,相同则不添加,不同则添加;

红黑树:有2-3树演变而来。。。。。。。

没有心思看了,下次再写,明天总结一下线程。