如何在Java中按字母顺序排列有序链表?

时间:2016-10-18 02:59:49

标签: java list sorting linked-list

我在使用我正在工作的程序时遇到了很多麻烦。

该程序应该按字母顺序打印出有序链表的元素(因为没有可用于列表的setter)。这就是我所拥有的:

GOrderedList是节点,Event是值。我有想法试图找到这些单词并按字母顺序将它们放在arraylist中。

page=

这产生了一个令人鼓舞的清单 - 但它已经失灵了。我有想法按字母顺序将元素放在新的ArrayList中。我可以将项目放在ArrayList中然后对其进行排序,但我宁愿不这样做。

2 个答案:

答案 0 :(得分:0)

您可以使用比较器对其进行排序。如下所示。

public static ArrayList<String> sortEvents(GOrderedList<Event> C) {
        // create arraylist
        ArrayList<String> sortedList  = new ArrayList<String>();

        while (true) {
            GOrderedList<Event> first = C.getNext();
            if (first == null) {
                break;
            }
            String highest = first.getValue().getname();
            sortedList .add(highest);
        }
        Collections.sort(sortedList , new Comparator<String>() {
            public int compare(String f1, String f2) {
                return f1.toString().compareTo(f2.toString());
            }
        });

        return sortedList ;
    };

答案 1 :(得分:0)

代码存在一些问题:

  1. 在while循环中调用getNext()将每次递增并跳过一个值。您可能需要调用hasNext()方法。

  2. 外循环的每次迭代都需要将其元素添加到正确的位置。如上所述,增值总是在最后。

  3. 如前所述,有一些标准的方法可以做到这一点,但我的假设是你需要做这个练习。如果没有,请使用比较器。 String的自然比较可能会给你你想要的东西。