JAVA基础知识点

1、集合:

(1)List和集合

image.png
image.png

(2)Map

image.png
总结(重要的实现类):
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的内存结构以及管理
image.png
image.png
image.png

3、Collection集合中的contains()方法:

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

image.png

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

image.png

重写equals之后

image.png

你可能感兴趣的:(java)