Colección a Iterable

2 minutos de lectura

avatar de usuario de myborobudur
miborobudur

¿Cómo puedo obtener un java.lang.Iterable de una colección como un Set o un List? ¡Gracias!

  • Quieres decir Iterator en vez de Iterable? A List implementa el Iterable interfaz. Un Iterator le permite iterar a través de un Listelementos de .

    – nwinkler

    16 de marzo de 2012 a las 16:21

  • Mi interfaz es en realidad SortedSet

    – myborobudur

    16 de marzo de 2012 a las 17:39

avatar de usuario de assylias
asilias

A Collection es un Iterable.

Entonces puedes escribir:

public static void main(String args[]) {
    List<String> list = new ArrayList<String>();
    list.add("a string");

    Iterable<String> iterable = list;
    for (String s : iterable) {
        System.out.println(s);
    }
}

  • Sé que el OP preguntó al respecto, pero la asignación a Iterable es completamente innecesario.

    – nwinkler

    16 de marzo de 2012 a las 16:28

  • @nwinkler estuvo de acuerdo con tu comentario.

    – asilias

    16/03/2012 a las 16:30

  • Gracias, era un problema genérico.

    – myborobudur

    18 de marzo de 2012 a las 5:25

  • @myborobudur: ¿cuál fue el problema que tuvo con los genéricos?

    – Newtopiano

    15/08/2016 a las 17:51

Avatar de usuario de Tom
Tomás

No me queda claro lo que necesitas, así que:

esto te da un iterador

SortedSet<String> sortedSet = new TreeSet<String>();
Iterator<String> iterator = sortedSet.iterator();

Los conjuntos y las listas son iterables, por eso puedes hacer lo siguiente:

SortedSet<String> sortedSet = new TreeSet<String>();
Iterable<String> iterable = (Iterable<String>)sortedSet;

  • El OP pide Iterable no un Iterator

    – amit

    16 de marzo de 2012 a las 16:21

  • Gracias, era un problema genérico.

    – myborobudur

    18 de marzo de 2012 a las 5:26

Iterable es una súper interfaz para Collectionpor lo que cualquier clase (como Set o List) que implementa Collection también implementa Iterable.

  • Gracias, era un problema genérico.

    – myborobudur

    18 de marzo de 2012 a las 5:26

Ambas cosas Establecer y Lista Las interfaces amplían la Recopilación interfaz, que a su vez amplía la Iterable interfaz.

Avatar de usuario de Nathan Hughes
nathan hughes

java.util.Collection extiende java.lang.Iterableno tienes que hacer nada, ya es un Iterable.

groovy:000> mylist = [1,2,3]
===> [1, 2, 3]
groovy:000> mylist.class
===> class java.util.ArrayList
groovy:000> mylist instanceof Iterable
===> true
groovy:000> def doStuffWithIterable(Iterable i) {
groovy:001>   def iterator = i.iterator()
groovy:002>   while (iterator.hasNext()) {
groovy:003>     println iterator.next()
groovy:004>   }
groovy:005> }
===> true
groovy:000> doStuffWithIterable(mylist)
1
2
3
===> null

¿Ha sido útil esta solución?