Uso di Iteratori

di il
1 risposte

Uso di Iteratori

Ciao ragazzi, buonasera, son nuovo qui.. ho cercato di fare tutto per conto mio, ma sono arrivato ad un punto morto:

Praticamente io devo realizzare un insieme di interi non negativi mediante un albero binario di ricerca. Nella sua realizzazione, l'interfaccia che devo realizzare è la seguente (ho omesso gli altri metodi in quanto non sono interessanti ai fini della domanda):

import java.util.*;
package ins;
public interface Insieme extends Iterable, Cloneable{

[......]

/**
* Conversione in String
* Restituisce una String con gli elementi dell’insieme in ordine crescente
* racchiusi tra parentesi quadre e separati da blank
* @return la stringa
*/
String toString();

[.....]

/**
* Restituisce un iteratore per scandire gli elementi dell’insieme in ordine
* crescente, il metodo remove non è implementato
* @return l'iteratore
*/
Iterator iterator();

[......]

Il problema arriva nel realizzare il metodo toString() (di banale interpretazione) per il quale, nella sua realizzazione, devo far uso di un iteratore, la cui interfaccia è

public interface Iterator {
boolean hasNext(); //restituisce true se esiste ancora un elemento della collezione da esaminare, false altrimenti;
Object next(); //restituisce il prossimo elemento da esaminare, e lancia un'eccezione se questo non esiste;
void remove();
}

la realizzazione del toString() deve seguire la specifica

/**
* Conversione in String
* Restituisce una String con gli elementi dell’insieme in ordine crescente
* racchiusi tra parentesi quadre e separati da blank
* @return la stringa
*/
public String toString();

Come vi ho anticipato, devo realizzarlo utilizzando un iteratore, e questo iteratore deve essere a sua volta realizzato in modo che

/**
* Restituisce un iteratore per scandire gli elementi dell’insieme in ordine
* crescente, il metodo remove non è implementato
* @return l'iteratore
*/
public Iterator iterator();

Ora, nella consegna del progetto, una voce dice che "L’iteratore non deve essere implementato." Ecco quindi che io entro in palla. Ho capito che, in base ai metodi di un oggetto iteratore, il metodo toString() ha la seguente struttura

public String toString() {
String s ="[";
Iterator i = this.iterator();
while(i.hasNext()){
s += i.next();
if(i.hasNext())
s += " ";
}
return s += "]";
}

Volevo quindi chiedere a voi come cavolo mi devo comportare: dato che l'iteratore non deve essere implementato, come faccio ad averlo??? Sempre dalla specifica, leggo che il metodo remove() non è implementato, quindi presumo che gli unici metodi che possiede un oggetto di questo tipo siano hasNext() e next().

Quindi, ricapitolando, ho un metodo per creare un iteratore, e questo iteratore possiede solo i due metodi hasNext() e next(), ma allo stesso tempo nella consegna è specificato che l'iteratore non deve essere implementato.. Volevo quindi chiedervi: come faccio a farmi restituire un iteratore se non lo posso implementare?? Vi ringrazio in anticipo per qualsiasi aiuto, e mi scuso per il disturbo:)

Se mi son spiegato male fatemi sapere, cercherò di farvi capire meglio qual'è il mio problema

1 Risposte

  • Re: Uso di Iteratori

    Scusa, per prima cosa usa l'identazione del codice che non ci capisco niente X_X

    poi la tua domanda è "come faccio ad usare un iteratore senza implementarlo?"?

    se si la risposta è "semplice", nel senso, che se utilizzi una struttura dati che lo implementa, allora eredita anche l'iteratore.

    altrimenti non ho capito
Devi accedere o registrarti per scrivere nel forum
1 risposte