不使用hashset方法实现
时间: 2024-12-22 16:27:36 浏览: 13
如果你不想使用`HashSet`来直接去重,也可以使用传统的循环和临时列表的方式,通过比较元素的值来进行删除操作。下面是一个不使用哈希集的示例,适用于`LinkedList<Integer>`:
```java
import java.util.*;
public class RemoveDuplicatesWithoutHashSet {
public static void removeDuplicatesNoHashSet(LinkedList<Integer> list) {
// 创建一个空的ArrayList,作为临时存储去重后的元素
ArrayList<Integer> tempList = new ArrayList<>();
// 遍历原始链表
for (int i = 0; i < list.size(); ) {
int current = list.get(i); // 当前元素
// 搜索tempList,如果找到则跳过,否则添加到tempList并移动指针
boolean found = false;
for (int j = 0; j < tempList.size(); j++) {
if (current == tempList.get(j)) {
found = true;
break;
}
}
if (!found) {
tempList.add(current);
i++;
} else {
i++; // 跳过已经存在的元素
}
}
// 将tempList的内容复制回原链表
list.clear();
for (int element : tempList) {
list.add(element);
}
}
public static void main(String[] args) {
LinkedList<Integer> originalList = new LinkedList<>(Arrays.asList(1, 2, 2, 3, 4, 4, 5));
System.out.println("Original List:");
for (int i : originalList) {
System.out.print(i + " ");
}
removeDuplicatesNoHashSet(originalList);
System.out.println("\nList with duplicates removed:");
for (int i : originalList) {
System.out.print(i + " ");
}
阅读全文