美文网首页
顺序表 - ArrayList源码

顺序表 - ArrayList源码

作者: 小名坎坎 | 来源:发表于2019-04-09 18:11 被阅读0次

一 线性表

在介绍顺序表之前,首先要先要了解什么是线性表

定义:1.线性表是最基本、最简单、也是最常用的一种数据结构

           2.线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接

简单的了解下线性表的概念,在接下来的介绍中会更好的了解

二 顺序表

定义:顺序表是在计算机内存中以数组的形式保存的线性表

特点:内存上就是关联的

优点:存取速度高效,在无需扩容时尾插效率高,支持随机访问

缺点:中间插入或删除效率低

结构图

以上介绍的都是概念,接下来我们在ArrayList中了解其具体的运用

三 ArrayList

    思路:初始化、增删改查

初始化

初始化赋值一个空数组

注释翻译为:初始化一个空数组默认长度为10,可我们只看到了空数组,其实我们会在源码中找到DEFAULT_CAPACITY,他的默认值就是10,那么为和数组有啥关系呢?我们后面再说

初始化一个长度为initialCapacity的数组

通过这两种方法我们就可以初始化出一个ArrayList,其实它还有一个初始化方法,有兴趣可以自己去了解一下。下面一一介绍增删该查,这里只针对单个元素。

增 Add(E e)

增加

要添加一个元素,我们该考虑的是这个数组的容量问题,容量够不够?不够又该咋办?容量够了直接赋值就行了

ensureCapacityInternal()

红色圈出的代码其实就是解释为什么说初始化长度没传的时候 默认是10了,原来是在添加的时候判断的。

顺着代码往下看,其实最后会找到grow()

grow()

这个方法就是定义数组的扩容规则,添加方法中的其他内容就不在此阐述

删  

传入element,删除第一个找到的元素    

remove(Object o) 

    传入index,删除对应位置的元素

remove(int index)

    删除元素的过程中必然会遇到元素重新排列的问题,下面这段代码就是对数组剩下元素的重新排列操作

   这段代码在两个删除方法中都能找到。

    很简单的赋值 可简单的用

在这里介绍了简单的增删改查,ArrayList还提供了其他方便我们操作的api,如有兴趣可自行研究

至此,介绍关于顺序表和ArrayList的简单知识。over!

相关文章

  • 顺序表 - ArrayList源码

    一 线性表 在介绍顺序表之前,首先要先要了解什么是线性表 定义:1.线性表是最基本、最简单、也是最常用的一种数据结...

  • 总结

    Android篇 数据结构与算法顺序表 - ArrayList源码链表 - 单向链表、双向链表 - LinkedL...

  • 3.图解ArrayList

    1. 前言 ArrayList和LinkedList是我们常用的数据结构,它们都是线性表,ArrayList是顺序...

  • ArrayList与LinkedList

    简介: ArrayList和LinkedList就是分别对顺序表和双向链表的一种实现 顺序表:需要申请连续的内存空...

  • 一起做做JAVA面试题--ArrayList、LinkedLis

    ArrayList、LinkedList 和 Vector源码解析 ArrayList查看源码 ArrayList...

  • ArrayList的源码分析(一)【转载】

    ArrayList简介 ArrayList核心源码 ArrayList源码分析System.arraycopy()...

  • 线性表之顺序存储结构

    线性表=顺序存储结构 +链式存储 结构 顺序存储结构:物理上连续(arraylist、数组) 增删改查排序 数组 ...

  • 线性表--顺序表

    大厂之路的第一篇 顺序表即ArrayList 说到ArrayList 我们首先想起的是它的父类AbstractL...

  • 数据结构

    1 线性表 1.1 顺序存储结构 1.1.1 特点 查找的性能高 1.1.2 代表 ArrayList(java)...

  • 【ArrayList源码】add方法(自动扩容)

    1 add源码解析 在【ArrayList源码】ArrayList构造方法中,ArrayList无参构造方法默认是...

网友评论

      本文标题:顺序表 - ArrayList源码

      本文链接:https://www.haomeiwen.com/subject/vcdiiqtx.html