在我的班级的一个新项目中,我遇到了很多困难,在这个项目中,我们必须一次同时实现泛型,接口,迭代器和抽象数据类型。基本上,我们需要创建一个可迭代的,通用的链表,并使它像集合一样起作用,但是我一直在努力仅将新节点添加到列表中。当我无法访问LinkedNode字段并且迭代器类中仅有的方法是remove()hasNext()和Next()时,如何使用迭代器将节点添加到链接列表中? LinkedNode唯一的公共方法是获取其数据并获取其链接,没有修饰符。另外,由于它是集合,所以我只能添加集合中尚未存在的元素。 这是我想出的代码:
public Set<E> adjoin(E e) {
LinkedSet<E> newSet = new LinkedSet<E>(head);
LinkedNode<E> newNode = new LinkedNode<E>(e,head);
for (E i : this) {
if (i.equals(e)) {
return this;
}
}
return newSet;
}
这一切都在LinkedSet类中,使用私有构造函数使另一个LinkedSet返回