Java List

List 接口

1、List集合存储元素特点:有序可重复
  有序:List集合中的元素有下标。
  从0开始,以1递增。
  可重复:存储一个1,还可以再存储1.
2、List既然是Collection接口的子接口,那么肯定List接口有自己“特色”的方法:
  以下只列出List接口特有的常用的方法:
  void add(int index, Object element)
  Object set(int index, Object element)
  Object get(int index)
  int indexOf(Object o)
  int lastIndexOf(Object o)
  Object remove(int index)

 

ArrayList集合:
  1、默认初始化容量10(底层先创建了一个长度为0的数组,当添加第一个元素的时候,初始化容量10。)
  2、集合底层是一个Object[]数组。
  3、构造方法:
    new ArrayList();
    new ArrayList(20);
  4、ArrayList集合的扩容:
      增长到原容量的1.5倍。
    ArrayList集合底层是数组,怎么优化?
      尽可能少的扩容。因为数组扩容效率比较低,建议在使用ArrayList集合的时候预估计元素的个数,给定一个初始化容量。
  5、数组优点:
    检索效率比较高。(每个元素占用空间大小相同,内存地址是连续的,知道首元素内存地址,
    然后知道下标,通过数学表达式计算出元素的内存地址,所以检索效率最高。)
  6、数组缺点:
    随机增删元素效率比较低。
    另外数组无法存储大数据量。(很难找到一块非常巨大的连续的内存空间。)
  7、向数组末尾添加元素,效率很高,不受影响。
  8、面试官经常问的一个问题?
    这么多的集合中,你用哪个集合最多?
    答:ArrayList集合。
    因为往数组末尾添加元素,效率不受影响。
    另外,我们检索/查找某个元素的操作比较多。

  9、ArrayList集合是非线程安全的。(不是线程安全的集合。)

 

链表数据结构

  

 

 LinkedList 集合

  双向链表

 

Vector集合

  底层是数组,初始化容量是10,扩容是 double,是线程安全,效率较低

  

  ArrayList 怎么得到一个线程安全的List:
    Collections.synchronizedList(list);

 

posted @ 2020-09-15 22:58  一叶扁舟,乘风破浪  阅读(303)  评论(0编辑  收藏  举报