欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > 【数据结构】ArrayList顺序表

【数据结构】ArrayList顺序表

2025/3/14 19:33:07 来源:https://blog.csdn.net/2401_86112610/article/details/146210069  浏览:    关键词:【数据结构】ArrayList顺序表

数据结构系列一:顺序表

一、数据结构的面向对象性

1.面向似复刻变量对象引用

2.下层存储引用的特点

3.上层管理引用

4.数据结构的类

二、ArrayList类变量里的方法

1.构造

1.1无参构造:

1.2并表构造:

1.3定容构造:

2.遍历

2.1迭代器遍历

2.1.1Iterator迭代器

2.1.1.1获取:

2.1.1.2判空(后):

2.1.2ListIterator迭代器

2.1.2.1获取:

2.1.2.2判空(前):

2.1.2.3遍历(前):

2.1.2.4修改:

2.1.2.5插入:

2.2foreach遍历:

2.3for循环遍历:

3.获取:

4.查找

4.1从前往后查找:

4.2从后往前查找:

5.比较:

6.修改:

7.插入

7.1插一个引用(重载位置)

7.1.1尾插:

7.1.2指定位置插:

7.2并表插引用:

8.删除(重载指定)

8.1指定索引删:

8.2对象搜索删:

9.截取:

10.清空:




面向对象前置知识

  • class(类)是一种类型,用class(类)可以创建类变量类变量里存储变量与方法,创建类变量时都有开辟空间,类变量里的存储的成员变量都存储在堆区,类变量里存储的成员方法都存储在方法区类变量本身也是个变量存有空间,它里面存储这些成员变量与成员方法,不过类变量开辟的存储空间有部分在堆上(变量),有部分在方法区上(方法),是在两个不同区域开辟空间创建来的变量,类变量创建后相应地它也有哈希值,指向创建的这个类变量,能访问这个类变量的所有
  • 类变量创建好后,类变量也可作为一种类型,以此类变量为类型创建似复刻变量,似复刻变量按照类变量里的非静态变量模具变量创建复制变量、在堆上开辟空间存储有类变量里的静态变量、类变量里的所有方法的访问路径信息,用类变量创建的似复刻变量在堆区,复刻变量里存储复制变量与访问类变量路径信息两块内容,创建好似复刻变量后,相应地有指向此似复刻变量的哈希值,能访问与管理到此似复刻变量的所有内容似复刻变量的存哈希值引用类型与类变量存哈希值引用类型是共用的,因为它们最终的指向对象类型都是相同的

----------------------------------------------

一、数据结构的面向对象性

1.面向似复刻变量对象引用

以引用的形式面向似复刻变量对象,将它们引用组群管理起来的结构就是各种各样的数据结构似复刻变量对象引用是数据存储的目标单位元,以数组直接存放管理似复刻变量对象引用的结构就是顺序表


2.下层存储引用的特点

同次中全部管理的是相同类变量类型的似复刻变量,因此存储的目标单位元引用都是相同的一个引用类型在一次中,所以用<统一似复刻变量对象引用类型的泛型>来统一化结构里的单位元引用类型,<泛型化又统一化>是面向似复刻变量对象的数据结构的特点,因为向上转型能保存子类信息所以将似复刻变量对象引用的存储统一用Object类变量的似复刻变量引用向上转型式存储数据结构的引用存储格式就能统一化创建存储


3.上层管理引用

似复刻变量引用作为存储数据对象存储在成组织的个个Object引用变量中,同时需要一个管理存储整体的管理这些存储引用变量的引用,即上层的管理引用管理下层的存储引用,上层的管理引用其实是下层存储引用作为非静态复制变量所对类变量的实例化似复刻变量引用,上层的管理引用是似复刻变量,下层的存储引用是似复刻变量里的非静态成员,这样对它管理的,所属的类变量就是数据结构的类变量有很多种数据结构有很多种对应的类变量类对着它的一个类变量创建似复刻变量就是创建这个类变量对应的一个数据结构


4.数据结构的

数据结构的类变量一般有继承别的一个类、实现很多的接口,里面有对应的非静态存储引用成员作着模板、也有静态成员、有很多操作非静态存储引用成员的方法(增删查改这些),方法有很多是连接接口去重写对应实现有的,因为存储引用们的类型相互之间必须是统一一种的,所以类变量的似复刻变量那边就一定有指定一种它里面存储引用的类型—> 类<T或具体类型>,因为存储引用类型统一了,操作存储引用的方法也必须是统一类型的—> 方法(E或具体类型),会有很多其它也要跟着统一类型的


二、ArrayList类变量里的方法

1.构造

1.1无参构造

new ArrayList<E>();

—> return ArrayList

构造出一个里面存储引用的复制变量0存储引用容量的顺序表的似复刻变量0存储引用容量的复制变量在后面通过调用add等会进行增扩空间放引用

1.2并表构造

new ArrayList<E>(Collection);

—> return ArrayList

往c里面向下搜索到存储引用的表的存储引用复制并到创的新的存储引用数组成员在此新的构造顺序表的似复刻变量里,这里是创建新的存储引用数组的浅拷贝,存储引用复制到新的存储引用数组里还是共享着同一实例

对Collection c的要求:ArrayList(Collection<? extends E> c)

ArrayList类变量里的构造方法设置的形参类型为Collection接口变量(用来接收传来的Collection及其下面接口、类实现的似复刻变量),和ArrayList类变量一样,它也有指定统一引用类型的,把两个<>写一起一个里面写通配符?是Collection的指定引用类型,E是ArrayList的指定引用类型,extend说明?继承于E即Collection的指定引用类型要继承于ArrayList的指定引用类型的

1.3定容构造

new ArrayList<E>(int);

—> return ArrayList

指定初始顺序表的似复刻变量里复制的存储引用单位的个数创建构造此大小存储引用数组的列表,列表的初始容量数组的大小设置好了,但里面的元素都还是0


2.遍历

2.1迭代器遍历

实现原理

数据结构里的所有集合实现类往上最上层都间接连接着Iterable接口,Iterable(可迭代的)接口里有以迭代器接口变量Iterator为返回值获得迭代器接口变量的抽象方法Iterable接口往下继承下去每一层都有对应的重写实现方法来重写上制造出具体对应为本层迭代的迭代器获取方法(接口继承层没重写继续抽象的就没实现抽象传下去),到具体的集合实现类(或有实现它的抽象类)时,会在要实现迭代器的那层类里定义一个主动连接上Iterator接口的内部类(外部类里是一直都没有往下继承有Iterator接口的),重写获取Iterator迭代器接口变量方法的部分内部,通过实例化返回此实现上Iterator接口的内部类的似复刻变量去返回值接转向上转型得到重写对应为本层迭代的迭代器似复刻变量,就可用它迭代本层类了

List接口里有多加上获取ListIterator列表迭代器接口变量的抽象方法,相对应地在后面的所有实现List接口的表数据结构实现类都会有相应的获取列表迭代器的重写实现上方法,在那层实现类里相对应的有定义连接ListIterator列表迭代器接口的内部类,在重写方法里面实例化此内部类返回向上转型成迭代本层类的迭代器

ListIterator迭代器接口继承于Iterator迭代器接口,ListIterator里面的抽象方法比Iterator多,对应实现后的ListIterator迭代器接口似复刻变量里的方法自然比Iterator迭代器接口的似复刻变量里的方法多:

2.1.1Iterator迭代器
2.1.1.1获取

arraylist.iterator();

—> return Iterator<E>

获取迭代器接口实例似复刻变量往后只有移除的单向遍历迭代器,适用于Collection接口下实现的类

2.1.1.2判空(后)

it.hasNext();

—> return boolean

判断当前索引后一个位置是否有引用

2.1.1.3遍历(后)

it.next();

—> return E

迭代器索引后移并获取引用

2.1.1.4删除
it.remove();

—> return void

删除迭代器当前索引位置的引用

----------------------------------------------

2.1.2ListIterator迭代器
2.1.2.1获取

arraylist.listIterator();

—> return ListIterator<E>

获取列表迭代器接口的实例似复刻变量增了往前修改插入的双向遍历列表迭代器,适用于List接口下实现的类

2.1.2.2判空(前)

lit.hasPrevious();

—> return boolean

判断当前索引前一个位置是否有引用

2.1.2.3遍历(前)

lit.previous();

—> return E

列表迭代器索引前移并获取引用

2.1.2.4修改

lit.set(E1);

—> return E2

修改当前位置引用为指定引用,并返回原来被修改前的存储引用

2.1.2.5插入

lit.add(E);

—> return boolean

往迭代器遍历方向位置后插入一个引用E

----------------------------------------------  

2.2foreach遍历

for(E x : arraylist) { x }

将列表里的存储引用一次次全部取出来存放到E引用遍历使用  

----------------------------------------------

2.3for循环遍历

for (int i = 0; i < arraylist.size(); i++) {
    arraylist.get(i)
}
 


3.获取

arraylist.get(index);

—> return E

获取指定索引的那个存储引用


4.查找

4.1从前往后查找

arraylist.indexOf(Object o);

—> return index

从前往后查找第一个引用对象里内容相同的引用,并返回它的下标

4.2从后往前查找

arraylist.lastIndexOf(Object o);

—> return index

从后往前查找第一个引用对象里内容相同的引用,并返回它的下标


5.比较

arraylist.contains(Object o);

—> return boolean

判断指定引用的对象里内容在列表里是否有存在


6.修改

arraylist.set(index,E1);

—> return E2

将指定索引的那个存储引用修改为指定引用,并返回原来的那个被修改的引用


7.插入

7.1插一个引用(重载位置)

  • 重载:add(插入哪个位置)
7.1.1尾插

arraylist.add(E);

—> return boolean

将引用尾插到存储引用中

7.1.2指定位置插

arraylist.add(index,E);

—> return void

将引用插入到存储引用指定索引的位置上(指定索引的那个引用往前插),一定成功的所以无返回值

---------------------------------------------- 

7.2并表插引用

arraylist.addAll(Collection);

—> return boolean

将另一个集合类里的存储引用全部尾插到此存储引用中,也是默认浅拷贝,也是有ArrayList(Collection<? extends E> c)要求


8.删除(重载指定)

  • 重载:remove(怎么指定删)

8.1指定索引删

arraylist.remove(index);

—> return E

将存储引用里指定索引的那个引用删除,并返回此删除掉的引用

8.2对象搜索删

arraylist.remove(Object o);

—> return boolean

将此引用指向的对象与存储引用指向的对象存储内容比较相同删引用,删除第一个遇到的存储引用对象里面存储内容相同的引用


9.截取

arraylist.subList(index1,index2);

—> return List<E>

将存储引用指定下标范围的部分截取复制到新创建的列表似复刻变量存储引用数组中,返回这个新创建的列表,是浅拷贝把引用复制,指向的实例还是同一的


10.清空

arraylist.clear();

—> return void

把当前存储引用里的值全部置为null

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词