java LinkedList 底层详细

package cn.com.test04;


class MylinkedList<T>{
    private Node head;// 头节点
    private int size=0;// 记录元素个数
    private Node aa;//相当于一个指针
    public void add(T o){
        Node en = new Node(o,null);
        if(head==null){
            aa=head=en;
        }else{
         aa.next=en;
         aa=en;
        }
        size++;
    }
    public void addFirst(T o){
        add(0,o);
    }
    public void add(int index,T o){
        Node en = new Node(o,null);
        if(index==0){
            en.next=head;
            head=en;
        }else{
            Node sNode = getNode(index-1);
            en.next=sNode.next;
            sNode.next=en;
        }
        size++;
    }
    public void remove(int index){
        if(index==0){
            head=head.next;
        }else{
            Node sNode = getNode(index-1);
            sNode.next=sNode.next.next;
        }
        size--;
    }
    private Node getNode(int index){
        int i=0;
        Node dd=head;
          while (dd!=null) {
              if(index==i){
                  return dd;
              }
              dd=dd.next;
            i++;
          }
        return null;
    }
    public T get(int index){
        
        return (T)getNode(index).element;
    }
    public int size(){
        return size;
    }
    class Node<T>{
         T element;
         Node next;
        Node(T element, Node next) {
            this.element = element;
            this.next = next;
        }
    }
}

public class t04 {

    public static void main(String[] args) {
         MylinkedList<String> l= new MylinkedList<String>();// 内部是节点实现   指定位置增加   删除 效率较高     修改  查询 效率较慢
        l.add("aa");l.add("bb");l.add("cc");
        l.add(1,"dd");l.remove(1);
        for(int i=0;i<l.size();i++){
            System.out.println(l.get(i));
        }
    }

}
原文地址:https://www.cnblogs.com/anholt/p/3656004.html