List接口

List接口中常用的方法

  • List集合存储元素特点:有序可重复
    • 有序:List集合中的元素有下标
      从0开始,以1递增
      可重复:存储一个,还可以再存储相同对象
  • List既然是Collection接口的子接口,那么肯定List接口有自己的特色方法
    • Void add(int index, E element)使用较少,因为底层存储为数组,向指定位置插入数据效率较低
    • E get(int index) 因为有下标,所以List可以使用下标进行遍历
    • int lastIndexOf(Object o) 最后一次出现的索引
    • int indexOf(Object o) 对象第一次出现的索引
    • E remove(int index) 删除下标index处的元素
    • E set(int index, E element) 修改制定index处的元素

ArrayList集合

  • 默认初始化容量是10

  • 集合底层是一个Object[]数组

  • 构造方法1无参2int长度

  • size方法返回的是list中元素数量

  • 底层先创建了一个长度为0的数组,当添加第一个元素时,初始化容量为10

  • 扩容会增加为1.5倍,尽可能的少进行扩容,因为数组的扩容效率较低,建议在使用ArrayList集合的时候预估元素数量,给定一个初始化容量。

  • 数组优点

    • 检索效率较高,(每个元素占用空间大小相同,内存地址连续,知道首元素内存地址和下标后,通过数学表达式计算出元素的内存地址,所以检索效率最高)
  • 数组缺点

    • 随机增删元素效率较低
    • 数组无法存储大数据量(很难找到一块儿巨大的连续存储空间)
  • 向数组末尾添加元素,效率很高,不受影响

  • 面试常问:这么多集合中,使用哪个集合最多?

    • Arraylist :因为向数组末尾添加元素效率不受影响。另外,业务上需要检索查找某个元素的需求较多

通过new ArrayList(Collection c)方法可以将其他集合转化为ArrayList

可使用Collections.synchronizedList(List list)方法,将list变为线程安全的对象

posted @ 2021-03-04 17:26  UltraBlast  阅读(83)  评论(0)    收藏  举报