gpt4 book ai didi

java - 如何在自定义 OrderedLinkedList 类中显示从列表中删除了哪些元素?

转载 作者:行者123 更新时间:2023-11-29 04:49:28 24 4
gpt4 key购买 nike

我正在使用嵌套的 Ordered ListNode 类实现自定义 Ordered LinkedList 类。一切正常,但我试图通过访问已删除的元素来扩展它。

这不是必需的,但我很好奇这将如何工作,因为我只能使用我被指示创建的方法,它们是 boolean add()boolean remove( )clear()

我还跟踪每次修改,每次成功添加、删除或调用 clear() 时都会增加。我可以简单地创建另一个 OrderedLinkedList,并将删除的元素添加到其中,但我觉得我添加了不必要的修改计数。

同样,这部分只是为了好玩,不是必需的。我觉得这会让我对创建自定义类有更深入的了解。

我将展示 remove 和 main 方法。无法更改删除方法签名。

public boolean remove(Comparable obj) {

for(OrderedListNode element = head.next; element != tail; element = element.next) {

if(obj.equals(element.dataItem)) { //if element being removed is at the cursor
OrderedListNode previousNode = element.before;
OrderedListNode nextNode = element.next;

nextNode.before = previousNode; //places next element that's after before to the element after current element [prev -> current -> next]

previousNode.next = nextNode; //places prev of next element to the element before current

element.dataItem = (Comparable)NOT_FOUND; //removed element is now null

modCount++; //another modification
theSize--; //reduce the size by 1
return true; //if remove is successful
}
}
return false; //otherwise, not successful removal
}

主要方法:

public static void main(String[] args) {

OrderedLinkedList list = new OrderedLinkedList();
OrderedLinkedList removedList = new OrderedLinkedList();

modCount = 0;
list.add("Dog");
list.add("Bird");
list.add("dog");
list.add("bird");
list.add("Cat");
System.out.println("Before removal of element");
System.out.println(list);
list.remove("Dog");
removedList.add("Dog"); //not what I'm wanting to do
System.out.println("Removed " + removedList);
System.out.println("After removal of element");
System.out.println(list);
System.out.println("Total modifications = " + modCount);
System.out.println();
}

输出:

Before removal of element
Bird, Cat, Dog, bird, dog
Removed Dog //not actually accessing the element originally removed. just printing a new list
After removal of element
Bird, Cat, bird, dog
Total modifications = 7 //unnecessary modification due to additional add

最佳答案

如果你只想存储你删除的元素而不增加你的修改计数,你可以使用 ArrayList 并将你删除的元素放入其中。这样您的修改计数就不会受到影响。

关于java - 如何在自定义 OrderedLinkedList 类中显示从列表中删除了哪些元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35965366/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com