如何使用迭代器? 我学习java,我不知道迭代器,我只是用C++来处理它们。 问题是,我有一些类,它们是两个节点列表,上面有一个值,我需要从最小到最大列出它们(1,3,4,5,5,6..它们也可以是字符串,但这并不重要)。问题是我不知道如何实现一个迭代器来遍历和打印每个节点。以下是我的课程: interface Conjunt<T> { // Descripcio general: contenidor generic sense elements repetits // Pre : --- // Post: x pertany al conjunt void afegir(T x); // Pre : --- // Post: x no pertany al conjunt void esborrar(T x); // Pre : --- // Post: diu si x pertany al conjunt boolean pertany(T x); } 接口共轭{ //描述一般:上下文一般意义元素重复 //前:--- //邮政编码:x 无效afegir(tx); //前:--- //职位:x个职位 void-esborrar(tx); //前:--- //职位:diu si x pertany al Concent 布尔相关(tx); }

如何使用迭代器? 我学习java,我不知道迭代器,我只是用C++来处理它们。 问题是,我有一些类,它们是两个节点列表,上面有一个值,我需要从最小到最大列出它们(1,3,4,5,5,6..它们也可以是字符串,但这并不重要)。问题是我不知道如何实现一个迭代器来遍历和打印每个节点。以下是我的课程: interface Conjunt<T> { // Descripcio general: contenidor generic sense elements repetits // Pre : --- // Post: x pertany al conjunt void afegir(T x); // Pre : --- // Post: x no pertany al conjunt void esborrar(T x); // Pre : --- // Post: diu si x pertany al conjunt boolean pertany(T x); } 接口共轭{ //描述一般:上下文一般意义元素重复 //前:--- //邮政编码:x 无效afegir(tx); //前:--- //职位:x个职位 void-esborrar(tx); //前:--- //职位:diu si x pertany al Concent 布尔相关(tx); },java,iterator,Java,Iterator,魔术师 public class ConjuntLlista<T> implements Conjunt<T> { // Descripcio general: conjunt implementat en forma de llista de nodes encadenats protected Node primer; // Primer node de la llista class Node { // Descripcio ge

魔术师

public class ConjuntLlista<T> implements Conjunt<T> {
    // Descripcio general: conjunt implementat en forma de llista de nodes encadenats

    protected Node primer; // Primer node de la llista

    class Node {
    // Descripcio general: un node de la llista

    T valor;   // Valor dins la llista
    Node seg;  // Seguent node de la llista

    // Pre : ---
    // Post: Crea un node amb els valors dels parametres
    Node(T valor, Node seg) {
        this.valor = valor;
        this.seg = seg;
    }
    }

    class Pair {
    // Descripcio general: tupla de dos nodes   
    Node first;
    Node second;

    // Pre : ---
    // Post: Crea una tupla amb els valors dels parametres
    Pair(Node first, Node second) {
        this.first = first;
        this.second = second;
    }

    }

    // Pre : ---
    // Post: Crea un conjunt buit
    public ConjuntLlista() {
    primer = null;
    }

    // Les seguents operacions no cal especificar-les perque ja estan
    // especificades a la interface.

    public void afegir(T x) {
    if (!pertany(x)) primer = new Node(x, primer);
    }

    public void esborrar(T x) {
    Pair p = buscar(x);
    if (p.second != null) // Hem trobat  x
        if (p.first != null) //  x  no ocupa la primera posicio
        p.first.seg = p.second.seg;
        else
        primer = p.second.seg;
    }

    public boolean pertany(T x) {
    return buscar(x).second != null;
    }

    // Pre : ---
    // Post: Si el conjunt conte  x  aleshores retorna un parell  p  tal
    //       que  p.first  es el node anterior al que conte  x  i  p.second
    //       es el node que conte  x.  Si algun d'aquests nodes no
    //       existeix, es representa amb null.
    private Pair buscar(T x) {
    Node anterior = null; // Node anterior a l'actual
    Node actual = primer; // Node actual (a examinar)
    while (actual != null && !actual.valor.equals(x)) {
        anterior = actual;
        actual = actual.seg;
    }
    if (actual != null) // Hem trobat  x
        return new Pair(anterior,actual);
    else
        return new Pair(null,null);
    }

}
公共类concentllista实现concent{
//描述概述:节点封装形式的合并实现
受保护的节点primer;//primer Node de la llista
类节点{
//概述:联合国利斯塔节点
T valor;//valor dins la llista
Node seg;//segunt Node de la llista
//前:---
//张贴:Crea联合国节点amb els valors dels parametres
节点(T valor,节点seg){
这个。英勇=英勇;
this.seg=seg;
}
}
类对{
//Descripcio general:tupla de dos节点
节点优先;
第二节点;
//前:---
//职位:为员工提供最佳服务
对(节点第一,节点第二){
this.first=first;
这个秒=秒;
}
}
//前:---
//职位:Crea un Concent buit
公共联合体(){
引物=null;
}
//这是一部歌剧,没有什么特别的
//特别是la接口。
公开作废登记表(T x){
如果(!pertany(x))primer=新节点(x,primer);
}
公共无效esborrar(T x){
对p=客车(x);
if(p.second!=null)//Hem trobat x
如果(p.first!=null)//x无ocupa la primera posicio
p、 first.seg=p.second.seg;
其他的
底漆=p.second.seg;
}
公共布尔相关(T x){
返回客车(x).second!=null;
}
//前:---
//帖子:这是一个共同的话题
//第一节是前节,第二节是前节
//节点编号:E-el-node que x.Si algun d'aquests节点编号:E-el-node que x.Si algun d'aquests
//existeix,代表amb null。
私人对客车(T x){
Node frontial=null;//Node frontial a l'actual
Node-actual=primer;//Node-actual(检查者)
而(实际值!=null&!实际值.valor.equals(x)){
前=实际;
实际值=实际值.seg;
}
if(实际值!=null)//Hem-trobat x
返回新的一对(前面的,实际的);
其他的
返回新对(null,null);
}
}
下面是我需要添加迭代器的类,但我不知道如何添加迭代器:

import java.util.Iterator;
import java.util.NoSuchElementException;

public class ConjuntLlistaOrdenat1<T extends Comparable<T>>
    extends ConjuntLlista<T> 
    implements Iterable<T> {

    // Descripcio general: Conjunt que disposa d'un iterador que retorna
    //                     els elements de petit a gran.
    //
    //                     Implementacio en forma de llista ordenada,
    //                     sobreescrivint (com a minim) l'operacio afegir.

    public void afegir(T s) {
        if(this.primer != null) {
            Node q = this.primer;
            while(q.valor.compareTo(s) > 0)
                q = q.seg;
            Node p = q;
            q = new Node(s,p);
        }
    }   

}
import java.util.Iterator;
导入java.util.NoSuchElementException;
公共类conventllistaordenat1
扩展共轭项
可移植的{
//描述概述:召唤出一个处置者
//els elements de petit a gran。
//
//以正式形式实施,
//sobreescrivint(com a minim)l'operacio afegir。
公开作废登记表(TS){
如果(this.primer!=null){
节点q=this.primer;
而(q.valor.与>0相比)
q=q.seg;
节点p=q;
q=新节点(s,p);
}
}   
}
我看了一些例子,但我不明白,有人能给我解释一下吗?

接口将强制类使用方法迭代器()此方法必须返回实现接口的类的对象

因此,您的类ConventListaOrdenat1必须返回一个迭代器对象,该对象将用于通过hasNext()和next()方法在列表上进行迭代

您必须实现这个类和这两个方法


我发现很难理解您的代码,但我认为您的迭代器类可能是Conventllista的一部分。

首先:迭代器是“一次性”对象;一旦迭代器读取了一个值,就不能再从该迭代器读取该值;迭代器一旦被使用,就不能被重用

迭代器实例应该具有内部状态,以便它知道如何回答其三个方法:
.hasNext()
.next()
.remove()

下面是一个简单的迭代器在
String
s数组上的实现,它不支持删除:

public class MyStringIterator
    implements Iterator<String>
{
    // What we iterate against
    private final String[] array;
    private final int size;
    // The only internal state variable
    private int currentIndex = 0;

    public MyStringIterator(final String[] array)
    {
        this.array = Arrays.copyOf(array);
        size = this.array.length;
    }

    @Override
    public boolean hasNext()
    {
        return currentIndex < size;
    }

    @Override
    public String next()
    {
        if (!hasNext())
            throw new NoSuchElementException();
        return array[currentIndex++];
    }

    @Override
    public void remove()
    {
        throw new UnsupportedOperationException();
    }
}
公共类MyStringIterator
实现迭代器
{
//我们迭代的对象是什么
私有最终字符串[]数组;
私人最终整数大小;
//唯一的内部状态变量
私有int currentIndex=0;
公共MyStrinGitter(最终字符串[]数组)
{
this.array=Arrays.copyOf(array);
size=this.array.length;
}
@凌驾
公共布尔hasNext()
{
返回电流指数
您是否引用了此“”和此“”,您的代码不是英文的-这是一个英文网站。这使得任何人都很难看到您的代码做了什么,更不用说如何遍历您的节点了。这反过来意味着您不可能得到比以下更具体的答案:
Iterable
应该有一个方法
iterator()
,该方法返回一个
iterator
iterator
接口是自解释的。它应该存储其当前位置和m