数组链表实现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;
        }
    }

}
posted @ 2021-02-10 16:35  immortal_mode  阅读(93)  评论(0)    收藏  举报