【问题标题】:Creating a node class in Java在 Java 中创建节点类
【发布时间】:2015-10-11 05:29:23
【问题描述】:

所以我对 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);
    }

【问题讨论】:

  • 课程看起来不错。头和尾节点应在另一个名为 LinkedList 或类似名称的类中定义。
  • 我将如何创建这个类?更具体地说,如何创建这些 head 和 null 引用。
  • info = info; 更改为 this.info = info;,构造函数和设置器中的其余字段相同。
  • 如果您通常有ItemInfoNode node,则head 方法返回nodenode.getInfo()(根据规范),tail 返回node.getNext()。就像切割蛇的头和尾巴;-)
  • 不要继续添加已阅读和回答的问题。人们不会在旧帖子上监视您的俏皮话。

标签: java linked-list nodes


【解决方案1】:

欢迎来到 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());
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-22
    • 1970-01-01
    • 2011-11-23
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多