数组实现:
import java.util.Arrays;
class MyArray<E>{
private E[] elementData;
private int size;
private final static int DEFAULT_CAPACITY = 10;
public MyArray(){
this(DEFAULT_CAPACITY);
}
public MyArray(int initCap){
elementData = (E[])new Object[initCap];
}
public add(E e){
if(size == elementData.length){
int oldCap = elementData.length;
int newCap = oldCap + ((oldCap > 64)?oldCap:oldCap>>1);
if(newCap > Integer.MAX_VALUE){
thorw new IndexOutOfBoundsException("数组元素过多");
}
elementData = Arrays.copyOf(elementData,newCap);
}
elementData[size++] = e;
}
}
链表实现:
public class MyArrayBasedOnLinkedList<E> {
private class Node{
E e;
Node next;
Node prev;
}
Node(E data,Node next,Node prev){
this.data = data;
this.head = head;
this.tail = tail;
}
private int size;
private Node head;
private Node tail;
public void add(E data){
Node node = new Node(data,null,tail);
if(tail == null){
head = tail = node;
}
tail.next = node;
tail = node;
size++;
}
}