如何从java.lang.Iterable
或Set
这样的集合中获取List
?
谢谢!
答案 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)
Iterable
是Collection
的超级接口,因此实现Set
的任何类(例如List
或Collection
)也会实现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)
Set和List接口都扩展了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
}