JAVA实现简单的双向LinkedList

来源:互联网 发布:橘子 芥川龙之介 知乎 编辑:程序博客网 时间:2024/05/29 17:20

本文为简单的实现双向LinkedList(链表),实现了一些基本的功能

public void add(Object obj)public Object get(int index)public void remove(int index)public void insert(int index,Object obj)public int size()

并没有进一步优化,能够运行,但是存在着一些漏洞。


代码放在下面

package top.justsa;public class TestLinkedList {     private Node first;     private Node last;     private int size;           public void add(Object obj){     if(first==null){     Node n=new Node();     n.setPrevious(null);     n.setObj(obj);     n.setNext(null);     first=n;      last=n;     }     else{     Node n=new Node();     n.setPrevious(last);     n.setObj(obj);     n.setNext(null);     last.setNext(n);     last=n;          }     size++;     }         public Object get(int index){     rangCheck(index);     Node temp=node(index);     if(temp!=null){     return temp.obj;     }     return null;     }          public Node node(int index){     rangCheck(index);     Node temp=null;     if(first!=null){     temp=first;     for(int i=0;i<index;i++){     temp=temp.next;     }    }return temp;     }     public void remove(int index){     rangCheck(index);     Node temp=node(index);     if(temp!=null){     Node up=temp.previous;     Node down=temp.next;     up.next=down;     down.previous=up;     size--;     }          }          public void insert(int index,Object obj){     rangCheck(index);     Node temp=node(index);     Node newNode=new Node();     newNode.obj=obj;     if(temp!=null){     Node up=temp.previous;    up.next=newNode;    newNode.previous=up;        newNode.next=temp;    temp.previous=newNode;    size++;     }          }     public int size(){     return size;     }        private void rangCheck(int index){     if(index<0||index>=size){     try {throw new Exception();} catch (Exception e) {e.printStackTrace();}     }     }              public static void main(String[] args) {TestLinkedList list=new TestLinkedList();list.add("aaa");list.add("bbb");list.add("ccc");list.insert(1,"aaaaBBB");list.remove(1);System.out.println(list.size());System.out.println(list.get(1));}}

package top.justsa;public class Node { Node previous; Object obj; Node next;public Object getObj() {return obj;}public void setObj(Object obj) {this.obj = obj;}public Node getNext() {return next;}public void setNext(Node next) {this.next = next;}public void setPrevious(Node previous) {this.previous = previous;}}