java八股文-容器

ArrayListArrayList底层就是一个object[]数组ArrayList底层数组默认初始化容量为10jdk1.8 中ArrayList底层先创建又给长度为0的数组当第一次添加元素(调用add()方法)时,会初始化一个长度为10的数组当ArrayList中的容量使用完之后,则需要对容量进行扩容:ArrayList容量使用完后,会“自动”创建容量更大的数组,并将原数组中所有元素所有元素拷贝过去,这回导致效率下降优化:可以使用构造放方法ArrayList(int capacity
摘要由CSDN通过智能技术生成

在这里插入图片描述

List

有序;可重复;可通过索引值操作元素

ArrayList

jdk1.8 中ArrayList底层先创建又给长度为0的数组,当第一次添加元素(调用add()方法)时,会初始化一个长度为10的数组,ArrayList容量使用完后,会“自动”创建容量更大的数组,并将原数组中所有元素所有元素拷贝过去,这会导致效率下降。可以使用构造放方法ArrayList(int capacity)或ensureCapacity(int capacity)提供一个初始化容量,避免刚开始就一直扩容,造成效率较低

  • ArrayList特点:
    • 优点:向ArrayList末尾添加元素(add())时,效率高;查询效率高
    • 缺点:
      • 数组无法存储大数据量(因为很难找到一块很大的连续内存空间),扩容机制有额外的消耗。
      • 向ArrayList中添加元素,需要移动元素,效率较低
        1. 但是,向ArrayList中位置增/删元素较少时不影响
        2. 如果增删较多,可以考虑用链表
      • 遍历的时候可以采用索引的方式访问,随机访问

ArrayList构造方法:

  • ArrayList(): 创建一个初始化容量为10的空列表
  • ArrayList(int initialCapacity): 创建一个指定初始化容量为 initialCapacity的空列表
  • ArrayList(Collection<? extends E> c):创建又给包含指定集合中所有元素的列表

LinkedList

  • LinkedList特点

    • 数据结构:LinkedList底层是一个双向链表
    • 优点:增/删效率高
    • 缺点:查询效率低
    • 遍历的时候最好使用foreach访问,因为LinkedList可以调用get(int index) 方法。返回表中第index个元素,但是,每次都要从头结点开始遍历
  • LinkedList部分源码解读
    add()方法
    在这里插入图片描述

ListIterator 接口

  • LinkedList.add 方法只能将数据添加到链表的末尾

  • 如果要将对象添加到链表的中间位置,则需要使用ListIterator接口的add方法

      ListIterato是Iterator的一个子接口	
    

在这里插入图片描述

  • Iterator中的remove() 方法
    1. 调用next之后,remove方法删除的是迭代器左侧的元素
    2. 调用previous之后,remove删除的是迭代器右侧的元素
  • ListIterator中add方法
    1. 调用next之后,在迭代器左侧添加一个元素
    2. 调用previou
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值