JAVA:对链表中彼此相邻的重复值进行排序

JAVA: Sorting duplicate values next to each other in a linked list

所以我正在尝试制作一种将重复值彼此相邻放置的方法。我做的方法可以做到这一点,但问题是它将列表从低到高排序。这是我的功能

 private static void addValue(int val) {
 
         if (llist.size() == 0) {
             llist.add(val);
         } else if (llist.get(0) > val) {
             llist.add(0, val);
         } else if (llist.get(llist.size() - 1) < val) {
             llist.add(llist.size(), val);
         } else {
             int i = 0;
             while (llist.get(i) < val) {
                 i++;
             }
             llist.add(i, val);
         }
 
    }

我当前的输出如下所示: 用户输入:5

链表:[5,]

用户输入:4

链表:[4,5]

用户输入:3

链表:[3,4,5]

用户输入:5

链表:[3,4,5,5]

用户输入:3

链表:[3,3,4,5,5]

我想要的输出应该是:

用户输入:5

链表:[5,]

用户输入:4

链表:[5,4]

用户输入:3

链表:[5,4,3]

用户输入:5

链表:[5,5,4,3]

用户输入:3

链表:[5,5,4,3,3]

像这样应该可以解决问题:

private static void addValue(int val) {
    int idx = llist.indexOf(val);
    if (idx == -1)
        llist.add(val);
    else
        llist.add(idx, val);
}

基本上,llist.indexOf(val) 给出 llist 中与 val 匹配的第一个项目的索引,如果没有匹配项目,则为 -1。所以如果已经有一个匹配项,我们在那个位置插入 val;否则,我们将其添加到末尾。