数组链表实现List
数组链表
数组ArrayList

Code:
//可变数组
class ArrayList_{
//初始容器大小
private static int DEFAULT_SIZE = 10;
//容器
Object[] objects = new Object[DEFAULT_SIZE];
//当前的大小
private int size = 0;
//添加元素
public void add(Object o){
//如果容器满了的话,扩容原来容器的2倍
if (size == objects.length){
Object[] newObjects = Arrays.copyOf(this.objects, this.objects.length * 2);
objects = newObjects;
}
objects[size] = o;
size++;
}
public int size(){
return size;
}
}
Test:
public class TestIterator {
public static void main(String[] args) {
ArrayList_ arrayList = new ArrayList_();
for (int i = 0; i < 15; i++) {
arrayList.add("s: "+ i);
}
System.out.println(arrayList.objects.length);
for (int i = 0; i < arrayList.size(); i++) {
System.out.println(arrayList.objects[i]);
}
}
}

链表实现LinkedList

Code:
//链表
class LinkedList_{
//保存链表的头部节点
Node head = null;
//保存链表的尾部节点
Node tail = null;
//容器大小计数器
private int size = 0;
//添加元素
public void add(Object o){
//把object 封装成Node节点
Node node = new Node(o);
node.next = null;
//判断头节点是否为空,
if (head == null){
head = node;
tail = node;
}
//将原来最后一个的节点next 指向新添加的节点
tail.next = node;
//把尾部节点跟新成新增加的
tail = node;
//容量加一
size++;
}
public int size(){
return size;
}
//元素类
class Node{
private Object object;
private Node next;
public Node(Object object) {
this.object = object;
}
}
}

浙公网安备 33010602011771号