Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 添加到可编辑链接集?_Java_Linked List_Iterator - Fatal编程技术网

Java 添加到可编辑链接集?

Java 添加到可编辑链接集?,java,linked-list,iterator,Java,Linked List,Iterator,我在最近的一个类项目中遇到了很多困难,在这个项目中,我们必须一次性实现泛型、接口、迭代器和抽象数据类型。基本上,我们需要创建一个可编辑的、通用的链表,并使其像集合一样工作,但我正在努力尝试向列表中添加一个新节点。当我无法访问LinkedNode字段,并且迭代器类中的唯一方法是remove()hasNext()和Next()时,如何使用迭代器将节点添加到链接列表中?LinkedNode唯一的公共方法是获取数据和链接,而不是修改器。另外,由于它是一个集合,我只能添加集合中尚未包含的元素。 这是我提出

我在最近的一个类项目中遇到了很多困难,在这个项目中,我们必须一次性实现泛型、接口、迭代器和抽象数据类型。基本上,我们需要创建一个可编辑的、通用的链表,并使其像集合一样工作,但我正在努力尝试向列表中添加一个新节点。当我无法访问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,则立即返回。值得注意的是,他的类不公开节点类,节点是一个实现细节。