ArrayList与顺序表
目录
一.顺序表
二.ArrayList
三.自我实现MyArrayList
1.创建类
2.打印顺序表
3.判断是否为满
4.扩容
5.新增元素(在数组最后新增)
6.获取长度
7.查找元素位置
8.删除第一次出现的元素
9.判断是否包含
10.清空
四.测试MyArrayList
五.ArrayList的使用
1.构造方法
2.ArrayList常见方法
3.ArrayList的遍历
总结
一.顺序表
顺序表是一种线性表的存储结构,它的元素在内存中是连续存储的。一般情况下采用数组存储,在数组上完成数据的增删查改。
二.ArrayList
ArrayList是Java中的一个类,它是Java集合框架的一部分。它提供了一种动态数组的数据结构,可以根据需要自动增长和缩小。
说明
- ArrayList是以泛型方式实现,需要实例化
- ArrayList支持随机访问
- ArrayList可以clone
- ArrayList支持序列化
三.自我实现MyArrayList
注:以整型为例
1.创建类
public class MyArraylist {
public int[] elem;
public int usedSize;//表示存储了多少有效数据
//默认容量
private static final int DEFAULT_SIZE = 10;
public MyArraylist() {
this.elem = new int[DEFAULT_SIZE];
}
2.打印顺序表
public void display() {
for(int i = 0; i < this.usedSize; i++) {
System.out.print(this.elem[i] + " ");
}
System.out.println();
}
3.判断是否为满
public boolean isFull() {
if (this.usedSize == this.elem.length) {
return true;
}
return false;
}
4.扩容
此处使用2倍扩容
private void resize() {
this.elem = Arrays.copyOf(this.elem,2*this.elem.length);
}
5.新增元素(在数组最后新增)
public void add(int data) {
if(this.isFull()) {
resize();
}
this.elem[this.usedSize] = data;
this.usedSize++;
}
6.获取长度
public int size() {
return this.usedSize;
}
7.查找元素位置
public int indexOf(int toFind) {
for (int i = 0; i < this.usedSize; i++) {
if (this.elem[i] == toFind) {
return i;
}
}
return -1;
}
8.删除第一次出现的元素
public void remove(int toRemove) {
int index = indexOf(toRemove);//找到元素所对应的位置
if(index == -1) {
System.out.println("没有这个数据");
return;
}
for (int i = index; i < usedSize-1; i++) {
elem[i] = elem[i + 1];
}//从i位置开始把后面的元素往前盖
usedSize--;
elem[usedSize] = 0;
}
9.判断是否包含
public boolean contains(int toFind) {
for (int i = 0; i < this.usedSize; i++) {
if (this.elem[i] == toFind) {
return true;
}
}
return false;
}
10.清空
public void clear() {
usedSize = 0;
}
注:以上自我实现都以整型为例,引用类型需要修改
四.测试MyArrayList
首先先实例化对象,通过新增元素添加了四个元素并进行打印,通过isFull()方法判断是否为满,查找元素1的位置,并且删除第一次出现的元素5,因为这时候还没有新增元素5,所以会打印“没有这个数据”,再新增七个元素测试扩容并获取长度,然后测试是否包含元素11,最后清空。结果如下图所示:
五.ArrayList的使用
1.构造方法
- new ArrayList():构造一个初识容量为十的空列表。
- ArrayList(int initialCapacity):构造具有指定初始容量的空列表。
- ArrayList(Collection<? extends E> c) :构造一个包含指定集合的元素的列表,按照它们由集合的迭代器返回的顺序。
2.ArrayList常见方法
3.ArrayList的遍历
ArrayList可以使用三种方式便利:for循环+下标,foreach、迭代器
总结
使用ArrayList可以方便地进行元素的增加、删除、获取和遍历等操作。它是常用的集合类之一,特别适用于需要频繁添加或删除元素的场景。在这里插入代码片