如何删除java LinkedList中的重复项?
我试图从预先制作好的排序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()) {
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不允许使用集合集合