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
;否则,我们将其添加到末尾。
所以我正在尝试制作一种将重复值彼此相邻放置的方法。我做的方法可以做到这一点,但问题是它将列表从低到高排序。这是我的功能
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
;否则,我们将其添加到末尾。