首页 > 解决方案 > 如何在Java中对链表进行就地排序以按升序添加包含整数的对象?

问题描述

我有一个链接列表,其中包含学生类型的对象,名称(字符串)和 ID(整数)。我有一个 insertInOrder 方法。如果我只使用这种方法,所有对象都按顺序添加...1、2、3、4 等,但是如果我想将另一个对象添加到未按顺序创建的链表中,我需要解决。有人可以告诉我如何解决这个问题吗?

因此,如果有 ID 为 8、5、9、3 的学生并使用此方法,则我的链表已排序。但是如果使用 insert_to_front 或 insert_to_end 之类的方法,然后想要添加 ID 为 7 的学生,则应该在添加之前对链表进行排序......对吗?

 public void insertInOrder(Student s) {
    if (head == null) {
        head = s;
    } else if (s.getId() == head.getId()) {
        return;

    } else if (s.getId() < head.getId()) {
        insertToFrontofList(s);
    } else {
        Student c2 = head;
        Student c1 = head;
        while (c2.getNext() != null) {
            c1 = c2;
            c2 = c2.getNext();

            if (s.getId() < c2.getId()) {
                c1.setNext(s);
                s.setNext(c2);
                return;
            } else if (s.getId() == c2.getId()) {
                return;
            }
        }
        insertToEnd(s);
    }
}

标签: javasortinglinked-list

解决方案


推荐阅读