所以我正在尝试制作一个方法,将重复的值放在一起。我所做的方法可以做到这一点,但问题是它将列表从低到高排序。这是我的功能
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]
像这样的东西应该可以做到:
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
;否则,我们将其添加到末尾。