如何使用迭代器? 我学习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