- Java内置数组的特点
数组的长度一旦确定则不可改变
数组只能存储同一类型的数据
数组中每个存储空间大小一致且地址连续
数组提供角标的方式访问元素 - 动态数组的封装
可以把数组的相关属性和相关行为封装在类中 - 线性表的顺序存储结构
线性表的定义:零个或多个数据元素的有限序列
线性表的第一个元素无前驱有后继,最后一个元素有前驱无后继,其他元素均有前驱和后继
线性表的接口需要支持泛型E,表示该线性表中所存储的具体数据类型由外界决定,假如E为Integer,则它创建的对象均为integer类
线性表的接口内容
线性表顺序存储结构的定义:指的使用一段地址连续的存储单元依次储存线性表的数据元素
线性表的顺序存储结构实现类(Arraylist)
成员变量
成员函数
接口的实现
在特定位置插入元素,我们需要注意以下几点(以在位置2插入元素为例)
1.插入的角标位置是否合理(size可以表示当前线性表的表尾)
2.判断线性表是否已经满了,若满则需要扩容在添加元素
3.从size的位置开始遍历,到插入位置的后一个,size–,然后将前一个元素赋给后一个
4.遍历完之后将e插入到位置2,然后有效元素个数++;
扩容
1.先创建一个新数组,
2.将原来数组的元素,全部放到新数组中
3.此时的数组尾建的新数组,size保持不变
缩容
1.创建一个新数组
2.将原数组的内容赋给新数组
得到index下标位置的元素
1.判断数组是否为空
2.判断输入的角标是否合法
3.若上边两者都不满足,则返回值
修改指定角标处的元素
1.判断数组是否为空
2.判断输入的角标是否合法
找到元素e的第一个角标
1.先判断数组是否为空
2.若不为空,则遍历数组,若内容相同,则返回下标,否则返回-1.
将对象转成字符串–当外界打印list的时候,相当于调用toString()
StringBuilder–可变字符串,等同于+号
append(boolean b)----将boolean参数的字符串表示形式追加到序列
String.format( )----格式化输出
1.若对象为空,则直接添加字符’]’;
2.若不为空,则开始遍历,将数字添加进去
3.若为最后一个位置,则添加’]’,否则添加‘ ,’
4.最后利用StringBuilder中的toString方法,来返回字符串
删除指定角标的元素1.判断数组是否为空
2.判断角标位置是否合理
3.将所要删除的元素进行记录
4.遍历数组,将后边的元素依次赋给前一个
5.最后size–;
6.若删除后的size变为之前数组长度的1/4并且数组的长度要大于的数组默认长度时,则需要缩容
删除指定元素
1.现在数组里边找find(e)该元素
2.若有则返回移除
3.若没有则提示元素不存在
迭代器
接口Iterable里有迭代器iterator()方法,所以让list接口继承Iterable
又因为iterato为接口不能创建对象,所以我们可以新建一个ArrayListIterator类,来实现iterato方法。
iterato中有两个成员函数hasNext()和next()方法
数据结构与算法---动态数组(1)数组列表ArrayList
猜你喜欢
转载自blog.csdn.net/qq_45161607/article/details/103457064
今日推荐
周排行