Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何实现排序列表_Java_List - Fatal编程技术网

Java 如何实现排序列表

Java 如何实现排序列表,java,list,Java,List,因此,我有一个名为List的类和一个名为SortedList的类,它继承了类列表。还有一个名为node的类。我创建了另一个包含printing方法的类 但是,每次我插入三个名字,例如,我调用printing方法,它只打印我插入的姓氏。所以我的问题是:这个代码会生成一个排序列表吗?如果是这样,为什么只打印姓氏 列表类: public class List { protected Node head; protected int length; public void l

因此,我有一个名为
List
的类和一个名为
SortedList
的类,它继承了类列表。还有一个名为node的类。我创建了另一个包含printing方法的类

但是,每次我插入三个名字,例如,我调用printing方法,它只打印我插入的姓氏。所以我的问题是:这个代码会生成一个排序列表吗?如果是这样,为什么只打印姓氏

列表类:

public class List {

    protected Node head;
    protected int length;

    public void list()
    {
        head=null;
        length=0;
    }
    public boolean isEmpty()
    {
        return head==null;
    }
    public Node insert(Item a)
    {
        length++;
        head=new Node(a, head);
        return head;
    }
public class SortList extends List {

    private Node head;
    public SortList()
    {
        this.head=null;
    }
    public Node getFirst()
    {
        return head;
    }
    public Node Insert(Item newitem)
    {
        Node node = new Node(newitem);
        Node previous = null;
        Node current = head;
        while(current!=null && current.getValue().less(newitem))
        {
            previous=current;
            current=current.getNext();
        }
        if(previous==null)
        {
            head=node;
        }
        else
        {
            previous.setNext(node);
            node.setNext(current);
        }
        return head;
    }
    public void printlist()
{

    Node current = head; //ΑΡΧΗ ΤΗΣ ΛΙΣΤΑΣ.
    while(current!=null)
    {
        current.print();
        current = current.getNext();
    }
}
分类表类别:

public class List {

    protected Node head;
    protected int length;

    public void list()
    {
        head=null;
        length=0;
    }
    public boolean isEmpty()
    {
        return head==null;
    }
    public Node insert(Item a)
    {
        length++;
        head=new Node(a, head);
        return head;
    }
public class SortList extends List {

    private Node head;
    public SortList()
    {
        this.head=null;
    }
    public Node getFirst()
    {
        return head;
    }
    public Node Insert(Item newitem)
    {
        Node node = new Node(newitem);
        Node previous = null;
        Node current = head;
        while(current!=null && current.getValue().less(newitem))
        {
            previous=current;
            current=current.getNext();
        }
        if(previous==null)
        {
            head=node;
        }
        else
        {
            previous.setNext(node);
            node.setNext(current);
        }
        return head;
    }
    public void printlist()
{

    Node current = head; //ΑΡΧΗ ΤΗΣ ΛΙΣΤΑΣ.
    while(current!=null)
    {
        current.print();
        current = current.getNext();
    }
}
节点类:

public class Node {

    private Item info;
    private Node next;
    public Node(Item dat)
    {
        info=dat;
    }
    public Node (Item dat, Node b)
    {
        info=dat;
        next=b;
    }
    public Item getValue()
    {
        return info;
    }
    public void setNext(Node a)
    {
        next=a;
    }
    public Node getNext()
    {
        return next;
    }
    public void print()
    {
        info.print();
    }
}

列表
的实现中,
insert()
方法中有一个主要错误:

public Node insert(Item a)
{
    length++;
    head=new Node(a, head);
    return head;
}
您不会将新元素附加到列表的末尾,而是每次替换列表的头,从而丢弃上一个元素

这可以解释为什么您总是只看到插入的最后一个元素

Edit:事实证明,
insert()
方法确实有效,因为您在节点的构造函数中设置了对下一个节点的引用

但是,在排序列表中,有一个插入案例未设置下一个节点:

if(previous==null)
{
    head=node;

}
在排序列表中,不设置节点构造函数中的下一个元素。在所有其他情况下,在
insert()
方法中设置下一个元素,但在本例中不设置。如果要插入的元素是列表中最小的元素,
previous
为null,这是正确的——您的新元素是列表的新
头。但是,由于没有设置新元素的后续元素,列表中的所有元素现在都消失了

如果插入到列表中的最后一个元素是最小的,则最后一个元素也将是剩下的唯一元素,并且只打印最后一个元素

尝试设置继任者:

if(previous==null)
{
    head=node;
    head.setNext(current);
}

列表
的实现中,
insert()
方法中有一个主要错误:

public Node insert(Item a)
{
    length++;
    head=new Node(a, head);
    return head;
}
您不会将新元素附加到列表的末尾,而是每次替换列表的头,从而丢弃上一个元素

这可以解释为什么您总是只看到插入的最后一个元素

Edit:事实证明,
insert()
方法确实有效,因为您在节点的构造函数中设置了对下一个节点的引用

但是,在排序列表中,有一个插入案例未设置下一个节点:

if(previous==null)
{
    head=node;

}
在排序列表中,不设置节点构造函数中的下一个元素。在所有其他情况下,在
insert()
方法中设置下一个元素,但在本例中不设置。如果要插入的元素是列表中最小的元素,
previous
为null,这是正确的——您的新元素是列表的新
头。但是,由于没有设置新元素的后续元素,列表中的所有元素现在都消失了

如果插入到列表中的最后一个元素是最小的,则最后一个元素也将是剩下的唯一元素,并且只打印最后一个元素

尝试设置继任者:

if(previous==null)
{
    head=node;
    head.setNext(current);
}

列表
的实现中,
insert()
方法中有一个主要错误:

public Node insert(Item a)
{
    length++;
    head=new Node(a, head);
    return head;
}
您不会将新元素附加到列表的末尾,而是每次替换列表的头,从而丢弃上一个元素

这可以解释为什么您总是只看到插入的最后一个元素

Edit:事实证明,
insert()
方法确实有效,因为您在节点的构造函数中设置了对下一个节点的引用

但是,在排序列表中,有一个插入案例未设置下一个节点:

if(previous==null)
{
    head=node;

}
在排序列表中,不设置节点构造函数中的下一个元素。在所有其他情况下,在
insert()
方法中设置下一个元素,但在本例中不设置。如果要插入的元素是列表中最小的元素,
previous
为null,这是正确的——您的新元素是列表的新
头。但是,由于没有设置新元素的后续元素,列表中的所有元素现在都消失了

如果插入到列表中的最后一个元素是最小的,则最后一个元素也将是剩下的唯一元素,并且只打印最后一个元素

尝试设置继任者:

if(previous==null)
{
    head=node;
    head.setNext(current);
}

列表
的实现中,
insert()
方法中有一个主要错误:

public Node insert(Item a)
{
    length++;
    head=new Node(a, head);
    return head;
}
您不会将新元素附加到列表的末尾,而是每次替换列表的头,从而丢弃上一个元素

这可以解释为什么您总是只看到插入的最后一个元素

Edit:事实证明,
insert()
方法确实有效,因为您在节点的构造函数中设置了对下一个节点的引用

但是,在排序列表中,有一个插入案例未设置下一个节点:

if(previous==null)
{
    head=node;

}
在排序列表中,不设置节点构造函数中的下一个元素。在所有其他情况下,在
insert()
方法中设置下一个元素,但在本例中不设置。如果要插入的元素是列表中最小的元素,
previous
为null,这是正确的——您的新元素是列表的新
头。但是,由于没有设置新元素的后续元素,列表中的所有元素现在都消失了

如果插入到列表中的最后一个元素是最小的,则最后一个元素也将是剩下的唯一元素,并且只打印最后一个元素

尝试设置继任者:

if(previous==null)
{
    head=node;
    head.setNext(current);
}

@ᴳᵁᴵᴰᴼ 你。。。必须使用。。。python不JAVA为什么不能对列表内容的每次更改都使用
Collections.sort()
?请查看列表类的结构
public void list()
它必须是
public void list()
非常感谢,但我必须