2012-03-16 14 views
23

コレクションからjava.lang.Iterableを取得するには、SetまたはListのようなコレクションを入手するにはどうすればよいですか? ありがとう!イテラブルへのコレクション

+2

「Iterable」ではなく「Iterator」を意味しますか? 'List'は' Iterable'インタフェースを実装しています。 'Iterator'は、' List'の要素を反復することを可能にします。 – nwinkler

+0

私のインターフェースは実際にSortedSet – myborobudur

答えて

42

Aコレクション反復処理可能である...あなたが書くことができますので:そう、あなたが必要なものを私にはっきりしていない

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

です。私はOPがそれについて尋ねましたが、Iterableへの割り当ては完全に不要です。 – nwinkler

+0

@nwinklerさんがあなたのコメントに合意しました。 – assylias

+0

ありがとう、それは一般的な問題でした – myborobudur

6

これはあなたのイテレータ

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

セットとリストはイテレータブルなので、次のことができます:

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

オペレータは 'Iterable'を' Iterator'ではないと尋ねます – amit

+0

ありがとう、それは一般的な問題でした – myborobudur

5

IterableCollectionにスーパーインターフェースであるので、Collectionを実装する任意のクラス(例えば、SetまたはList)もIterableを実現します。

+0

ありがとう、それは一般的な問題でした – myborobudur

1

java.util.Collectionjava.lang.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 
関連する問題