|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2009
Messaggi: 700
|
[Java] Iterare su una collezione di generic
Ciao,
probabilmente si tratta di una banalità ma non tocco gli iteratori da anni e forse mi serve usarli in un programmino che stò terminando. Allora sono nella seguente situazione: In pratica ho un mio tipo di oggetto Poi (che rappresenta un punto di interesse con nome, longitudine, latitudine, descrizione, etcetc...vabbè non è importante). Io dichiaro una lista di generici oggetti Poi chiamata result. Dentro tale lista ci vado a mettere il riferimento ad un'ArrayList di generici oggetti Poi (tramite il metodo getRisultato())...e fin quì funziona tutto bene infatti come vedete faccio una serie di System.out che mi visualizzano il contenuto informativo di un arbitrario punto di interesse...ho creato un iteratore e l'ho usato per scorrere la collezione result invocando il metodo hasNext() solo che non succede nulla...probabilmente sono un bel po' arruginito sull'argomento e mi sfugge qualcosa, riuscite ad illuminarmi? Il problema viene sulla seconda parte in grassetto: io voglio iterare su tale collezione di generici oggetti di tipo Poi, voglio scorrerla dall'inizio alla fine Codice:
private List<Poi> result = null; // Contiene il risultato da mostrare sulla mappa
result = GuidaSubActivity.getRisultato(); // Mette la lista di POI nella variabile result
if(result != null){
System.out.println("Sono dentro GuidaGeoReferenziata e result punta a: " + result.toString());
Poi poiMain = null;
poiMain = result.get(3);
System.out.println("Nome poiMain: " + poiMain.getNome());
System.out.println("Lat poiMain: " + poiMain.getLat());
System.out.println("Lon poiMain: " + poiMain.getLon());
System.out.println("WikiLink poiMain: " + poiMain.getWikilynk());
Iterator <Poi> itr = result.iterator();
while (itr.hasNext()) {
Poi element = itr.next();
System.out.print("Nome Poi corrente: " + element.getNome());
}
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Feb 2009
Messaggi: 700
|
UP
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 1071
|
ciao
non credo di saperti aiutare... ma mi sembra di capire che non entra nel while.. prova a dare prima un itr.first() (mi pare) che porta il puntatore dell'iteratore al primo elemento.. anche se in teoria non ce ne dovrebbe essere bisogno.. l'applicazione è tutta dentro un thread no?
__________________
Affari: ariakasneverborne, PanCar, Luk@°°°, Fabio310, kintaro oe, krike, fabry180384, dariox am2, chiadoz, windsofchange, dado1979, Rudyduca, aleforumista, Sheva77 |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12905
|
Perché per scorrere la lista non usi questa sintassi?
Codice:
for (Poi p : result)
{
// fai quello che ti pare con p
}
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Comunque non cambia nulla, che io sappia, rispetto all'utilizzo esplicito di un iteratore: l'errore lamentato dall'utente al primo post è bizzarro. Io andrei di debug passo-passo.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12905
|
Quote:
Comunque se non erro (il che è probabile dato che non tocco da un po' java) usando l'iteratore puoi rimuovere ad esempio l'elemento corrente, mentre con la sintassi postata da me no. In ogni caso ove possibile credo sia meglio usare la sintassi stile "foreach", anche per comodità di lettura. |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Feb 2009
Messaggi: 700
|
doh...risolto...in realtà funzionava...è che avevo usato una print e non una println e forse mi ero perso l'output nel LogCat di Android o forse il logcat di Android non stampava l'output della print (anche se mi pare strano) ma voleva la println...vabbè...risolto...grazie mille comunque
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:38.




















