1.ArrayList
ArrayList底层是由数组实现的,查询块,增删慢。
2.ArrayList特点
(1)新增时会在必要的时候扩大数组容量
(2)插入一个元素时,会把插入的索引位置及以后的元素都往后挪一位
(3)删除元素时同插入,把删除位置索引以后的元素都往前挪一位
3.ArrayList基本操作
(1)初始值确定
private T[] element;
private int size;
private static final int INITSIZE=10;
新建节点:
public class Entry<E extends Comparable<E>>{
private E value;
private Entry<E> next;
public Entry(E value){
this.value = value;
this.next = this;
}
(2)
构造方法:
public MyArrayList(){
this(INITSIZE);
}
public MyArrayList(int capacity){
element = (T[])new Object[INITSIZE];
}
private void ensureCapacity(){
if(size == element.length){
int newCapacity =element.length+(element.length>>1);
element= Arrays.copyOf(element, newCapacity);
}
}
一些简单的方法:
public void setNext(Entry next) {
this.next = next;
}
public Entry getNext() {
return next;
}
public E getValue() {
return value;
}
public void setValue(E value) {
this.value=value;
}
(3)尾部添加
public void addTail(T value){
ensureCapacity();
element[size++]=value;
}
(4)头部添加
public void addhead(T value){
for(int i=size;i>0;i--){
element[i]=element[i-1];
}
element[0]=value;
size++;
}
(5)插值
public void addValue(int index,T value){
if(index<0||index>=element.length){
return;
}
for(int i=size;i>index;i--){
element[i]=element[i-1];
}
element[index]=value;
size++;
}
(6)删除头部
public void removeHead(){
for(int i=1;i<size;i++){
element[i-1]=element[i];
}
element[--size]=null;
}