2015-07-21 130 views
11

所以我對Java和編程相當陌生,我想知道如何創建一個節點類?用Java創建節點類

到目前爲止,我有:

public class ItemInfoNode{ 
    private ItemInfoNode next; 
    private ItemInfoNode prev; 
    private ItemInfo info; 
    public ItemInfoNode(ItemInfo info, ItemInfoNode next, ItemInfoNode prev){ 
     info = info; 
     next = next; 
     prev = prev; 
    } 
    public void setInfo(ItemInfo info){ 
     info = info; 

    } 
    public void setNext(ItemInfoNode node){ 
     next = node; 
    } 
    public void setPrev(ItemInfoNode node){ 
     prev = node; 
    } 
    public ItemInfo getInfo(){ 
     return info; 
    } 
    public ItemInfoNode getNext(){ 
     return next; 
    } 
    public ItemInfoNode getPrev(){ 
     return prev; 
    } 

} 

差不多詢問這些方法的問題,所以我把那些下來,但接下來的問題是問我指ItemInfoNode節點的頭部和尾部。這裏有點困惑。謝謝

編輯:感謝您的幫助傢伙!我試圖創建一個「InsertInfo」方法,將名稱,價格,標籤號碼等信息放入一個節點。我如何着手創建這種方法?

到目前爲止,我得到了這個..我有在具有所有這些,但我不知道如何使用/如果我甚至應該做一個不同類的構造函數Iteminfo ..

public void InsertInfo(String name, String rfdnumber, double price, String original_position){ 

     head = new ItemInfoNode (Iteminfo, head); 
    } 
+1

這個類似乎很好。頭部和尾部節點應在另一個名爲'LinkedList'或類似的類中定義。 –

+0

我將如何去創建這個類?更具體地說,我如何創建這些頭和空引用。 – John

+0

將'info = info;'更改爲'this.info = info;',對於構造函數和setters中的其餘字段也是如此。 – Pshemo

回答

8

歡迎來到Java! 這個節點就像一個塊,它們必須組裝起來做很棒的事情! 在這種特殊情況下,您的節點可以代表一個列表,鏈接列表,你可以在這裏看到一個例子:

public class ItemLinkedList { 
    private ItemInfoNode head; 
    private ItemInfoNode tail; 
    private int size = 0; 

    public int getSize() { 
     return size; 
    } 

    public void addBack(ItemInfo info) { 
     size++; 
     if (head == null) { 
      head = new ItemInfoNode(info, null, null); 
      tail = head; 
     } else { 
      ItemInfoNode node = new ItemInfoNode(info, null, tail); 
      this.tail.next =node; 
      this.tail = node; 
     } 
    } 

    public void addFront(ItemInfo info) { 
     size++; 
     if (head == null) { 
      head = new ItemInfoNode(info, null, null); 
      tail = head; 
     } else { 
      ItemInfoNode node = new ItemInfoNode(info, head, null); 
      this.head.prev = node; 
      this.head = node; 
     } 
    } 

    public ItemInfo removeBack() { 
     ItemInfo result = null; 
     if (head != null) { 
      size--; 
      result = tail.info; 
      if (tail.prev != null) { 
       tail.prev.next = null; 
       tail = tail.prev; 
      } else { 
       head = null; 
       tail = null; 
      } 
     } 
     return result; 
    } 

    public ItemInfo removeFront() { 
     ItemInfo result = null; 
     if (head != null) { 
      size--; 
      result = head.info; 
      if (head.next != null) { 
       head.next.prev = null; 
       head = head.next; 
      } else { 
       head = null; 
       tail = null; 
      } 
     } 
     return result; 
    } 

    public class ItemInfoNode { 

     private ItemInfoNode next; 
     private ItemInfoNode prev; 
     private ItemInfo info; 

     public ItemInfoNode(ItemInfo info, ItemInfoNode next, ItemInfoNode prev) { 
      this.info = info; 
      this.next = next; 
      this.prev = prev; 
     } 

     public void setInfo(ItemInfo info) { 
      this.info = info; 
     } 

     public void setNext(ItemInfoNode node) { 
      next = node; 
     } 

     public void setPrev(ItemInfoNode node) { 
      prev = node; 
     } 

     public ItemInfo getInfo() { 
      return info; 
     } 

     public ItemInfoNode getNext() { 
      return next; 
     } 

     public ItemInfoNode getPrev() { 
      return prev; 
     } 
    } 
} 

編輯:

聲明ItemInfo就象這樣:

public class ItemInfo { 
    private String name; 
    private String rfdNumber; 
    private double price; 
    private String originalPosition; 

    public ItemInfo(){ 
    } 

    public ItemInfo(String name, String rfdNumber, double price, String originalPosition) { 
     this.name = name; 
     this.rfdNumber = rfdNumber; 
     this.price = price; 
     this.originalPosition = originalPosition; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getRfdNumber() { 
     return rfdNumber; 
    } 

    public void setRfdNumber(String rfdNumber) { 
     this.rfdNumber = rfdNumber; 
    } 

    public double getPrice() { 
     return price; 
    } 

    public void setPrice(double price) { 
     this.price = price; 
    } 

    public String getOriginalPosition() { 
     return originalPosition; 
    } 

    public void setOriginalPosition(String originalPosition) { 
     this.originalPosition = originalPosition; 
    } 
} 

然後,你可以像這樣在鏈表中使用你的節點:

public static void main(String[] args) { 
    ItemLinkedList list = new ItemLinkedList(); 
    for (int i = 1; i <= 10; i++) { 
     list.addBack(new ItemInfo("name-"+i, "rfd"+i, i, String.valueOf(i))); 

    } 
    while (list.size() > 0){ 
     System.out.println(list.removeFront().getName()); 
    } 
} 
+0

非常感謝! – John

+0

@John不客氣! –