集合框架--双向链表的模拟实现
Java中的表,分三:
????? 1.向表,由一元素,可以找到相的下一元素.
????? 2.向表,由一元素,可以找到其相的前/后元素.
????? 3.循表,由一元素,可以找到其相的前/后元素,由最后一元素可以找到第一元素.
有Java的集合框架的相知,考 Java API,此用示例模集合框架中[向表] 的.
?
1. 定一
?
package collection;public class Node {//下一private Node next;//前一private Node prev;//中的private Object data;public Node getNext() {return next;}public void setNext(Node next) {this.next = next;}public Node getPrev() {return prev;}public void setPrev(Node prev) {this.prev = prev;}public Object getData() {return data;}public void setData(Object data) {this.data = data;}}?
2. 定一表
?
package collection;public class LinkedNode {//首private Node firstNode = null;//的度private int size = 0;//添加和public void put(Node node, Object data) {//存入中node.setData(data);//置的位置if (null == firstNode) {firstNode = node;} else {// 查找最后一个节点Node lastNode = firstNode;//while (null != lastNode.getNext()) {lastNode = lastNode.getNext();}//置下一lastNode.setNext(node);//置前一node.setPrev(lastNode);}size++;}//取指定位置的象public Node get(int index) {Node node = firstNode;//if (index != 0) {do {node = node.getNext();} while (--index > 0);}return node;}//取度public int size() {return size;}}?3. 新建一
?
package collection;public class LinkedListTest {public static void main(String[] args) {LinkedNode ln = new LinkedNode();//定Node n1 = new Node();Node n2 = new Node();Node n3 = new Node();Node n4 = new Node();Node n5 = new Node();Node n6 = new Node();Node n7 = new Node();Node n8 = new Node();Node n9 = new Node();//往中存入ln.put(n1, "aa");ln.put(n2, "bb");ln.put(n3, "cc");ln.put(n4, "dd");ln.put(n5, "ee");ln.put(n6, "ff");ln.put(n7, "gg");ln.put(n8, "hh");ln.put(n9, "ii");Node n = ln.get(3);//前的System.out.println("前中:"+n.getData());//前一Node p = n.getPrev();System.out.println("前的前一中:"+p.getData());//后一Node next = n.getNext();System.out.println("前的后一中:"+next.getData());}}?4. 行果如下

?
?
?
?
?