收集到Iterable

时间:2012-03-16 16:17:53

标签: java collections

如何从java.lang.IterableSet这样的集合中获取List? 谢谢!

7 个答案:

答案 0 :(得分:55)

集合 是一个Iterable ......所以你可以写:

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);
    }
}

答案 1 :(得分:6)

我不清楚你需要什么,所以:

这会让你成为一名迭代者

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

设置和列表是Iterables,这就是您可以执行以下操作的原因:

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

答案 2 :(得分:5)

IterableCollection的超级接口,因此实现Set的任何类(例如ListCollection)也会实现Iterable }。

答案 3 :(得分:2)

也许javadoc会帮助你。

答案 4 :(得分:1)

java.util.Collection扩展java.lang.Iterable,您无需执行任何操作,它已经是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

答案 5 :(得分:1)

SetList接口都扩展了Collection接口,该接口本身扩展了Iterable接口。

答案 6 :(得分:0)

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


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

list -> collection->iterable
}