2015-07-21 4 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. Здесь немного смущает. Спасибо

EDIT: Спасибо за помощь, ребята! Я пытаюсь создать метод «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;', то же самое для остальных полей в конструкторе и сеттерах. – 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; 
     } 
    } 
} 

EDIT:

Объявить 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 Добро пожаловать! –

Смежные вопросы