单链表实现 void retainAll(SinglyList<T>
时间: 2024-10-10 22:02:07 浏览: 28
单链表中实现`retainAll(SinglyList<T> other)`这个方法,通常是在处理集合操作时,保留当前链表(`this`)中存在的、也在给定链表`other`中存在的元素。这是一个典型的过滤操作,可以遍历两个链表,同时检查每个节点是否存在于另一个链表中。以下是这个方法的一个简单示例,假设我们有一个泛型单链表`ListNode<T>`:
```java
public class ListNode<T> {
T data;
ListNode<T> next;
// constructor and other methods...
}
public class SinglyLinkedList<T> {
private ListNode<T> head;
public void retainAll(SinglyLinkedList<T> other) {
ListNode<T> current = this.head, refOther = other.head;
while (current != null && refOther != null) {
if (!other.contains(current.data)) { // 判断当前节点的数据是否在other链表中
current = current.next; // 如果不在,移除当前节点
} else {
current = current.next;
refOther = refOther.next;
}
}
}
// helper method for checking if the list contains an element
private boolean contains(T value) {
ListNode<T> temp = head;
while (temp != null) {
if (temp.data.equals(value)) return true;
temp = temp.next;
}
return false;
}
}
```
在这个例子中,`contains()`方法用于辅助判断,`retainAll()`方法则通过迭代删除不符合条件的节点。
阅读全文