如何删除java LinkedList中的重复项?

如何删除java LinkedList中的重复项?,java,loops,linked-list,iterator,duplicates,Java,Loops,Linked List,Iterator,Duplicates,我试图从预先制作好的排序LinkedList中删除重复项,但我不允许使用哈希集、集合、映射、集合、节点、数组、索引等,只能使用循环,我有点不知所措。我的代码乱七八糟,但我要么抛出异常,要么删除所有内容。感谢您的帮助! 这是我当前的代码: private void duplicates() { ListIterator<String> it = sorts.listIterator(); it.next(); while(it.hasNext()) {

我试图从预先制作好的排序LinkedList中删除重复项,但我不允许使用哈希集、集合、映射、集合、节点、数组、索引等,只能使用循环,我有点不知所措。我的代码乱七八糟,但我要么抛出异常,要么删除所有内容。感谢您的帮助! 这是我当前的代码:

private void duplicates() {

    ListIterator<String> it = sorts.listIterator();
    it.next();
    while(it.hasNext()) {

        String last = it.previous();
        String nest = it.next();

        if(last.equals(nest)) {
            it.remove();
        }
    }
}
private void duplicates(){
ListIterator it=sorts.ListIterator();
it.next();
while(it.hasNext()){
String last=it.previous();
String nest=it.next();
if(last.equals(nest)){
it.remove();
}
}
}

您可以将Java8流API用于此类作业

private void unduplicate() {
  sortedCounties = sortedCounties.stream()
        .distinct()
        .collect(Collectors.toCollection(LinkedList::new));
}

因此,删除重复元素的基本思想是选择一个元素,并将其与其他元素进行比较,如果发现重复元素,则将其删除

sudo代码:

currentElement = iterator1.next()
while iterator1.hasNext()
   while iterator2.hasNext()
      nextElement = iterator2.next()
      if currentElement == nextElement
         then remove nextElement
      else
         then nextElement = iterator2.next()
   currentElement = iterator1.next()
…来自预先制作好的已排序LinkedList

只要您能保证列表是真正排序的(不是排序的,而是真正排序的),这会导致重复的元素彼此相邻,您就可以简单地比较这两个相邻元素,如果它们不同,则进行移位

仅循环

如果您的意思是“迭代”,而不是循环(
),那么这是一种方法:

ListIterator<String> it = sortedCounties.listIterator();
String current = it.next();                          // get a first element
while (it.hasNext()) {
    String next = it.next();                         // get another one
    if (current.equals(next)) {                      // if equal
        it.remove();                                 // .. remove the "next" element
    } else {
        current = next;                              // .. or else shift by one
    }
}
ListIterator it=sortedCountes.ListIterator();
字符串current=it.next();//获取第一个元素
while(it.hasNext()){
String next=it.next();//获取另一个
if(current.equals(next)){//if相等
it.remove();/…删除“下一个”元素
}否则{
当前=下一个;//…或按一移位
}
}

这将只检查相邻的重复项,您可能需要另一个列表并将其添加到其中,如果它不在,则只需使用一个集合。您必须使用嵌套循环。将每个元素与接下来的所有其他元素进行比较。如果有副本,请将其删除。这些不是lambda,而是流。您不需要流:
sortedCountes=new LinkedList(new LinkedHashSet(sortedCountes))
。OP不允许使用集合集合