1、汇合:

(1)List和汇合


(2)Map


总结(重要的实现类):
List的汇合存储元素的特点:
有序可反复;有序指的是存进去的程序和取出的程序雷同,每一个元素都有下标;

  • ArrayList:底层是数组。非线程平安,遍历快检索效率高,随机增删元素效率慢,但数组开端增加元素,效率不会影响。

1、ArrayList汇合初始化容量是10
2、ArrayList汇合底层是Object类型的数组Object[]
3、减少容量的时候是扩充原容量的1.5倍
4、倡议给定一个预预计的初始化容量,缩小数组的扩容次数,这是ArrayList汇合比拟重要的优化策略。

  • LinkenList:底层是双向链表,非线程平安,随机增删快,遍历慢。
  • Vector:线程平安,底层是数组,然而效率低下

Set汇合存储元素的特点:
无序不可反复,无序指的是存进去的程序和取出来的程序不肯定雷同,另外Set汇合中元素没有下标。

  • HashSet:底层是HashMap,放到HashSet汇合中的元素等同与放到HashMap汇合key局部了。
  • TreeSet:底层是TreeMap,放到TreeSet汇合中的元素等同与放到TreeMap汇合key局部了。

SortedSet汇合存储元素特点:
无序不可反复,然而SortedSet汇合中的元素是可排序的。可排序值的是能够依照大小顺序排列
Map:

  • HashMap:底层是Hash表,非线程平安,效率比Hashtable高,能够存储null的key和value,但Null作为键只能有一个,null作为值能够有多个。
  • TreeMap:底层是二叉树,TreeMap汇合的key能够主动依照大小程序排序。绝对于HashMap来说,次要多了对汇合中的元素依据key排序和对汇合内元素的搜寻的能力。
  • Hashtable:底层是Hash表,线程平安,不容许有null键和null值。
  • Propertie:是线程平安的,并且key和value只能存储字符串String.

2、JVM的内存构造以及治理


3、Collection汇合中的contains()办法:

汇合中的contains()办法底层代码中有equals办法,所以比拟的是内容,不是地址。然而如果是自定义对象的话就要重写equals办法,不然会放回false;

   自定义对象User()没有重写equals之前

重写equals之后