JAVA:在链表中对重复值进行排序
因此,我试图制作一种方法,将重复的值放置在彼此相邻的位置。我使用的方法可以做到这一点,但问题是它将列表从低到高排序。这是我的功能JAVA:在链表中对重复值进行排序,java,data-structures,linked-list,user-defined-functions,Java,Data Structures,Linked List,User Defined Functions,因此,我试图制作一种方法,将重复的值放置在彼此相邻的位置。我使用的方法可以做到这一点,但问题是它将列表从低到高排序。这是我的功能 private static void addValue(int val){ if(llist.size()==0){ 添加(val); }else if(list.get(0)>val){ 加(0,val); }else if(llist.get(llist.size()-1)
private static void addValue(int val){
if(llist.size()==0){
添加(val);
}else if(list.get(0)>val){
加(0,val);
}else if(llist.get(llist.size()-1)
我当前的输出如下所示:
用户输入: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
;否则,我们会将其添加到末尾。建议您在不重新设计轮子的情况下,看看它能做什么。是llist
ajava.util.LinkedList
?@KevinAnderson是的,修复了它!非常感谢。我已经在试着学习公共静态无效排序(列表,比较你实际上可以通过排序来实现这一点,但你真的不想这样做。这样做会更慢、更复杂。找个时间尝试一下,只是为了好玩,你就会明白为什么。并且要研究集合。排序;在其他很多时候它确实有用。
private static void addValue(int val) {
int idx = llist.indexOf(val);
if (idx == -1)
llist.add(val);
else
llist.add(idx, val);
}