Java 为什么我的代码没有删除重复的节点?我的输出仍然是12311
我试图删除未排序链表中的重复节点。然而,我的输出并没有改变链表 我试图替换此代码:Java 为什么我的代码没有删除重复的节点?我的输出仍然是12311,java,linked-list,void,Java,Linked List,Void,我试图删除未排序链表中的重复节点。然而,我的输出并没有改变链表 我试图替换此代码: list.add(new Node(1)); list.add(new Node(2)); list.add(new Node(3)); list.add(new Node(1)); list.add(new Node(1)); 与 但还是没有运气 import java.util.HashSet; import java.util.LinkedList;
list.add(new Node(1));
list.add(new Node(2));
list.add(new Node(3));
list.add(new Node(1));
list.add(new Node(1));
与
但还是没有运气
import java.util.HashSet;
import java.util.LinkedList;
class Node {
public int value;
public Node next;
public Node(int value) {
this.value = value;
}
}
class LinkedLists {
Node head;
public static void removeDups(Node n) {
HashSet<Integer> set = new HashSet<Integer>();
Node prev = null;
if (n == null) {
return;
}
while(n != null) {
if (set.contains(n.value)) {
prev.next = n.next;
} else {
set.add(n.value);
prev = n;
}
n = n.next;
}
}
public static void main(String[] args) {
LinkedList<Node> list = new LinkedList<Node>();
list.add(new Node(1));
list.add(new Node(2));
list.add(new Node(3));
list.add(new Node(1));
list.add(new Node(1));
removeDups(list.getFirst());
for (int i = 0; i < list.size(); ++i) {
System.out.print(list.get(i).value);
}
}
}
import java.util.HashSet;
导入java.util.LinkedList;
类节点{
公共价值观;
公共节点下一步;
公共节点(int值){
这个值=值;
}
}
类链接列表{
节点头;
公共静态void removeDups(节点n){
HashSet=newhashset();
Node prev=null;
如果(n==null){
回来
}
while(n!=null){
if(设置包含(n值)){
上一个=下一个;
}否则{
设置。添加(n.值);
prev=n;
}
n=n.next;
}
}
公共静态void main(字符串[]args){
LinkedList=新建LinkedList();
列表。添加(新节点(1));
添加(新节点(2));
添加(新节点(3));
列表。添加(新节点(1));
列表。添加(新节点(1));
removeDups(list.getFirst());
对于(int i=0;i
我预计产量为123 您可能对自己实现链表和使用Java自己的
LinkedList
集合感到困惑
Java在内部管理next
和previous
指针。它不允许您操纵它们,也不希望您管理它们。它实现了一个双链接列表,但它是从您那里抽象出来的
您正在将5个节点添加到此链接列表中
,并且没有重复的节点
在这种情况下,您的节点
类是无用的。您正在更新一个单独的next
指针链接链,但您没有遍历它或以任何方式使用它
您可以简单地将数字直接添加到链接列表
,然后删除重复的数字:
List<Integer> list = new LinkedList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(1);
list.add(1);
List<Integer> uniqueList = list.stream().distinct().collect(Collectors.toList());
for (int i = 0; i < uniqueList.size(); ++i) {
System.out.print(list.get(i).value);
}
List List=newlinkedlist();
增加第(1)款;
增加(2);
增加(3);
增加第(1)款;
增加第(1)款;
List uniqueList=List.stream().distinct().collect(Collectors.toList());
对于(int i=0;i
这不是实现LinkedList的方式。如果是家庭作业,那么我肯定会要求您自己实现linkedlist,而不是使用Java的lib。
List<Integer> list = new LinkedList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(1);
list.add(1);
List<Integer> uniqueList = list.stream().distinct().collect(Collectors.toList());
for (int i = 0; i < uniqueList.size(); ++i) {
System.out.print(list.get(i).value);
}