如何删除javaLinkedList中的重复项



我正试图从预制排序的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();
}
}
}

。。。从预制排序链接列表。

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

仅循环

如果你的意思是"迭代",而不是循环(for-each(,那么这是一种方法:

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
}
}

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

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()

您可以使用Java 8 Stream API来完成这种任务

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

相关内容

  • 没有找到相关文章

最新更新