Java 添加到可编辑链接集?
我在最近的一个类项目中遇到了很多困难,在这个项目中,我们必须一次性实现泛型、接口、迭代器和抽象数据类型。基本上,我们需要创建一个可编辑的、通用的链表,并使其像集合一样工作,但我正在努力尝试向列表中添加一个新节点。当我无法访问LinkedNode字段,并且迭代器类中的唯一方法是remove()hasNext()和Next()时,如何使用迭代器将节点添加到链接列表中?LinkedNode唯一的公共方法是获取数据和链接,而不是修改器。另外,由于它是一个集合,我只能添加集合中尚未包含的元素。 这是我提出的代码:Java 添加到可编辑链接集?,java,linked-list,iterator,Java,Linked List,Iterator,我在最近的一个类项目中遇到了很多困难,在这个项目中,我们必须一次性实现泛型、接口、迭代器和抽象数据类型。基本上,我们需要创建一个可编辑的、通用的链表,并使其像集合一样工作,但我正在努力尝试向列表中添加一个新节点。当我无法访问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;
}
公共集邻接(E){
LinkedSet newSet=新的LinkedSet(head);
LinkedNode newNode=新的LinkedNode(e,头);
对于(EI:本){
如果(即等于(e)){
归还这个;
}
}
返回新闻集;
}
这都在LinkedSet类中,使用私有构造函数使另一个LinkedSet返回迭代器接口没有add方法,如果修改基础集合,迭代器通常反应不好。还不完全清楚你想做什么?对不起,我不想过度解释。基本上,在这种方法中,我们需要使用私有构造函数将旧链表复制到新链表,将参数中的节点添加到副本中,但前提是它不在旧链表中。我试着让方法遍历原始数据,检查输入的数据是否相同,如果值已经在旧的链表中,则返回相同的副本。我想你自己也说过,如果迭代器接口上的唯一方法是boolean hasNext()、E next()和void remove(),无法仅使用迭代器将新元素添加到基础列表中。但是java.util.LinkedList确实有一个void add(E)方法,以及一个boolean contains(E)方法。看起来add()方法可以简单地调用contains方法,如果contains()返回true,则立即返回。值得注意的是,他的类没有公开节点类,节点是一个实现细节。迭代器接口没有add方法,如果修改了基础集合,迭代器通常反应不好。还不完全清楚你想做什么?对不起,我不想过度解释。基本上,在这种方法中,我们需要使用私有构造函数将旧链表复制到新链表,将参数中的节点添加到副本中,但前提是它不在旧链表中。我试着让方法遍历原始数据,检查输入的数据是否相同,如果值已经在旧的链表中,则返回相同的副本。我想你自己也说过,如果迭代器接口上的唯一方法是boolean hasNext()、E next()和void remove(),无法仅使用迭代器将新元素添加到基础列表中。但是java.util.LinkedList确实有一个void add(E)方法,以及一个boolean contains(E)方法。看起来add()方法可以简单地调用contains方法,如果contains()返回true,则立即返回。值得注意的是,他的类不公开节点类,节点是一个实现细节。