Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Iterator e Itarable?

  1. #1

    Iterator e Itarable?

    Vorrei capire pił precisamente la differenza tra queste due interfacce, che spesso vengono confuse.

    Allora da quello che ho capito io un iteratore č un TDA che estende il TDA di posizione, e consente di scorrere gli elementi su una struttura dati.
    La classe Iterable definisce il metodo iterator() con cui č possibile creare un iteratore per un oggetto.
    Invece la classe Iterator č quella che contiene i metodi per far scorrere l'iteratore, quindi quando dalla classe Iterable invoco il metodo:

    codice:
    Iterator <E> it= lista.iterator()
    Creo un oggetto iteratore it che scorre sugli elementi della lista tramite i metodi della classe Iterator.

    Funziona cosģ pił o meno?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,280

    Re: Iterator e Itarable?

    Originariamente inviato da Darčios89
    La classe Iterable definisce il metodo iterator() con cui č possibile creare un iteratore per un oggetto.
    Esatto, un oggetto puņ implementare questa interfaccia per dire "guardate, io sono iterabile ed ho un metodo iterator()".
    A dire il vero sapere che una collezione č Iterable generalmente č poco utile. Nel senso che se si usa direttamente una collezione, es. ArrayList, lo si "sa" che ha il iterator(). Potrebbe averlo anche se non implementasse Iterable!
    A meno che ci sia un metodo o una API particolare che si aspetta di ricevere un Iterable, il fatto che una collezione implementi Iterable č solo un pro-forma.

    Il motivo vero per cui c'č Iterable č un altro. Java 5 ha introdotto il ciclo "for-each" e il "target" del for-each puņ essere un array oppure, ecco il punto, un qualunque oggetto che implementa Iterable. Non necessariamente una collezione!

    for (Xyz elem : unOggettoIterable) { ... }

    Č qui che serve appunto questa marcatura "sono un oggetto iterabile".

    Originariamente inviato da Darčios89
    Invece la classe Iterator č quella che contiene i metodi per far scorrere l'iteratore
    Esatto, ha appunto i ben noti next/hasNext pił altro.

    Originariamente inviato da Darčios89
    codice:
    Iterator <E> it= lista.iterator()
    Creo un oggetto iteratore it che scorre sugli elementi della lista tramite i metodi della classe Iterator.
    Sģ. <E> dove E chiaramente č il tipo degli elementi (eventualmente anche con l'uso del wildcard ?), non č un "segnaposto".
    Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet

  3. #3
    Bene..ti ringrazio tanto!

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.