Visualizzazione dei risultati da 1 a 10 su 13

Discussione: Iterator e hasmap

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    46
    Infatti anche a me sembrava andasse già bene così, però era richiesto l'uso di Iterator e Iterable, ho anche il metodo @Override nella classe di implementazione dell'esercizio e non capivo come implementarlo, ma per come ho fatto l'esercizio penso non serva a questo punto. Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Giuso Visualizza il messaggio
    però era richiesto l'uso di Iterator e Iterable, ho anche il metodo @Override nella classe di implementazione dell'esercizio e non capivo come implementarlo
    Mettiamola così, in modo che ti sia più chiaro. Se devi semplicemente usare delle collezioni del framework, non devi implementare Iterator/Iterable. Le collezioni sono già "iterabili". Le usi e le iteri come ti pare.
    Discorso diverso invece se dovessi realizzare una nuova collezione "da zero" (tipicamente/sovente per motivi "didattici") oppure se fai una classe che rappresenta una composizione di N elementi (magari sfruttando al suo interno collezioni del framewok) e vuoi iterare su un oggetto della tua classe.

    Ti faccio un esempio banale ma comprensibile: hai una classe Prodotto (un prodotto vendibile) e una classe Carrello. Carrello potrebbe avere al suo interno una lista di oggetti Prodotto così:

    codice:
    public class Carrello {
        private List<Prodotto> prodotti = new ArrayList<Prodotto>();
    
        // ....metodi di gestione....
    }

    Scritta così, NON puoi usare un oggetto Carrello direttamente come "target" del for-each.

    codice:
    Carrello carrello = new Carrello();
    // ....
    
    for (Prodotto prodotto : carrello) {     // NO !
        // ....
    }

    Se vuoi che il for-each sopra sia lecito, allora Carrello deve implementare Iterable<Prodotto> e deve avere un iterator() che tira fuori un Iterator<Prodotto>. Come lo implementi? La cosa più banale e veloce è sfruttare e restituire direttamente il Iterator della lista.

    codice:
    public class Carrello implements Iterable<Prodotto> {
        private List<Prodotto> prodotti = new ArrayList<Prodotto>();
    
        // ....metodi di gestione....
    
        public Iterator<Prodotto> iterator() {
            return prodotti.iterator();
        }
    }
    Ultima modifica di andbin; 03-04-2018 a 16:24
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.