我有一个添加方法来创建一个无序的链表,并且有一个由定义的拖车节点
ListNode<E> front = new ListNode<E>(null,null);
据我了解,我可以继续将值添加到列表的前面,但是因为这是 Set 的 Linked List 实现并且我不能有重复的值,所以我需要检查集合(从前面到拖车的每个 listnode节点)以确保它没有我要添加到列表中的新值。这是我的添加方法。
public boolean add(E e) {
ListNode<E> newNode = new ListNode<E>(e, null);
//point to trailer
newNode.next = front.next;
//front now points to newNode
front.next = newNode;
//front->newNode->trailer
objectCount++;
return true;
}
现在,要检查 newNode 是否不在链接列表中,我需要实现一个 contains 方法,该方法检查列表中的每个元素,如果它在链接列表中则返回 true。如果它返回 true,那么我不执行上面的 add 方法,如果不执行,那么我成功添加了值。所以,我在想一些事情:
if(this.contains(newNode))
return false;
else {
newNode.next = front.next;
front.next = newNode;
}
但我不知道如何成功实现我的 contains 方法。这是我所拥有的:
public boolean contains(Object o) {
ListNode<E> o1 = (ListNode<E>) o;
if (o1.value == front.next.value)
return true;
else
return false;
}
我不确定如何使方法包含,检查每个节点的 Object o,如果它在链表中则返回 true,否则返回 false。那么,展望未来,我对如何实现这一点的理解是否正确?以及如何修复我的 contains 方法?