Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使链接列表唯一_Java_Linked List - Fatal编程技术网

Java 使链接列表唯一

Java 使链接列表唯一,java,linked-list,Java,Linked List,因此,我有以下清单: 8,9,1,2,3,5,3,1,8,1,4,5,2,7,9,9,5,6 并且想把它复制成唯一的(只包含一个相同的数字),所以这个是 8,9,1,2,3,5,4,7,6 出现的唯一问题是,remove()方法删除节点值的第一个实例,并且假定保留数字的第一个实例,并且假定从列表中删除以下实例。没有集合、哈希映射或任何东西 while(current.getPrevious() != null) { while(next.getPrevious()

因此,我有以下清单:

 8,9,1,2,3,5,3,1,8,1,4,5,2,7,9,9,5,6
并且想把它复制成唯一的(只包含一个相同的数字),所以这个是

8,9,1,2,3,5,4,7,6
出现的唯一问题是,remove()方法删除节点值的第一个实例,并且假定保留数字的第一个实例,并且假定从列表中删除以下实例。没有集合、哈希映射或任何东西

    while(current.getPrevious() != null) {
        while(next.getPrevious() != null) {
            if(next.equals(current)){
                next = next.getNext();
                continue;
            }
            else if(next.getValue().compareTo(current.getValue()) == 0){
                remove(next.getValue()); // The remove method deletes the first instance of number in the linked list
                next = next.getNext();

            }
                next = next.getPrevious();

        }
        current = current.getNext();
        next = current.getNext();
    }

将其全部放入
LinkedHashSet
中,该集合将保留订单并仅保留第一份副本

Set<Integer> noDups = new LinkedHashSet<Integer>(myList);

如果你不想做你自己的,试着用一个。它是一个只包含唯一元素的通用集合,将处理新元素的添加。如果这些新元素已在集合中,则不会添加它们

编辑:
如果您正在实现自己版本的唯一链表,请尝试使用add函数检查新数据是否已包含在列表中。如果没有,请添加新数据。如果您将验证包含在这样的方法中,那么向其中添加新的元素可能会更容易。您甚至可以扩展这个想法,创建一个函数,该函数接受一个列表或数组,并对元素调用addItem方法,即list参数。

您希望在输入时,而不是在删除时,以重复为目标

由于我不确定您用于插入的代码,我将介绍一般流程:

  • 从头部开始进行所有插入。如果为空,则插入全权委托
  • 否则,沿节点链向下迭代
  • 如果它们的任何数据值与您希望插入的数据相等,则不要插入它(理想情况下,返回
    false
  • 否则,继续沿链迭代,并在末尾插入它。返回
    true

OP可能希望在上阅读Java集合。了解像LinkedHashSet这样的集合是一项投资,它将获得多次回报。问题是“没有集合、哈希图或任何东西”,这大概意味着这是一项家庭作业,老师正试图让学生们思考算法。我正试图让他们自己思考——谢谢你的阅读。查看编辑过的帖子,你可以创建一个简单的函数,只需遍历你拥有的列表,并检查作为参数传入的元素。
[8, 9, 1, 2, 3, 5, 4, 7, 6]