1.列表
在基础数据结构中,列表作为最为基础的一个数据结构进行体现。
2.列表的模型
3.基本算法
1.增加元素(在头部/尾部/其余地方)
2.删除元素(在头部/尾部/其余地方)
3.扩容/缩容
4.获取有效长度
5.判断列表是否为空
6.获取某位置元素(头部/尾部/其余地方)
7.改变某位置的元素
8.寻找元素,返回下标。
9.列表是否包含某元素
10.获取容积
11.清除列表
12.交换列表中两位置的元素
13.重写toString方法
4.实现方法
一,顺序列表
使用数组Date[ ]实现。
-
增加元素
在头部增加,尾部增加,中间增加。
-
删除元素
在头部删除,尾部删除,中间删除。
-
扩容/缩容
-数组中增加元素时,数组已满,则需要扩容。
-数组中删除元素时,一般删除到数组长度的四分之一时,一般将数组的长度删除到原来的一半。则需要缩容。 -
获取有效长度
获取数组的有效长度。
-
判断列表是否为空
获取数组的有效长度是否为0。
-
获取末位置元素
获取数组的有效长度-1的位置的元素。
-
改变某位置的元素
根据数组的下标改变某下标的元素。
-
寻找元素
循环遍历数组判断元素是否相等。返回其下标。
-
列表是否包含某元素
和寻找元素一样,循环遍历数组判断元素是否相等。
-
获取容积
获取数组的总长度。
-
清除列表
-数组的有效长度size是标记数组某位置是否存在元素。
-直接将size置0。 -
交换列表中两位置的元素
在数组中交换两位置之间的元素。
-
重写toString方法
重新拼接字符串。打印输出。
代码:
public class ArrayList<E> implements List<E>{
private E[] data; //容器-存储元素 data.length 最大容量
private int size; //当前列表中元素的个数 有效长度
private static final int DEFAULT_CAPACITY=10;
public ArrayList(){ //默认构造函数中创建一个容量为10的列表
this(DEFAULT_CAPACITY);
}
public ArrayList(int capacity){ //构造函数中创建一个容量为capacity的列表
if(capacity<0){
capacity=DEFAULT_CAPACITY;
}
this.data=(E[]) new Object[capacity];
this.size=0;
}
//O(n)
public void add(int index, E e) { //增加元素
if(index&