2013-07-31 8 views
13

String配列を返す必要があります。私はGuavaを使ってStringを分割します。以下のコードを参照してくださいIterableを配列に変換する

Iterable<String> arrayOfValues = Splitter.on(";").split(myString); 

Iterableを返します。しかし、私はString[]が必要です。 Iterator<Element>とし、それをArray[]に変換する方法はありますか?多くのありがとう

答えて

18

プレーンJavaのString.split(正規表現)メソッドを使用する場合は、問題ありません。これはString []を返します。

"my;string".split(";") 

String[] splits = mystring.split(";"); 

ファンシーライブラリが不要な場合は使用しないでください。

3

使用することもできグアバのFluentIterable

String test= "Welcome to java world"; 
Iterable<String> tokens=Splitter.on(" ").split(test); 
String array[]=Iterables.toArray(tokens,String.class); 

を次のようにちょうどその配列に変換する必要はありませんのようなイテレータの要素にアクセスしたい場合は

はグアバで
FluentIterable.from(Splitter.on(":").split(mystring)).toArray(String.class) 
0

あなたはそれを変換することができます。あなたは直接の質問は答えが唯一の配列に対して反復処理可能に変換する方法を説明し、「アレイへのイテレータを変換する」と言うにもかかわらず

System.out.println(Iterables.get(tokens,2)); 
0

例えば

インデックス

することにより、これらの要素にアクセスすることができます。

したがって、IteratorをGuavaでArrayに変換するには、Iterators.toArray(Iterator<? extends T> iterator, Class<T> type)を使用できます。

0

グアバがなければ、あなたはそれが原因myriad issues with generic arrays in Java,に、この機能の一般的なバージョンを書くので、軽く踏むために少し難しいこの

public static <String> String[] toArray(Iterable<String> itr) { 
    ArrayList<String> ret = new ArrayList<>(); 
    for(String t : itr) { 
     ret.add(t); 
    } 
    return ret.toArray(new String[]); 
} 

ようなもので、アレイにIterable<String>を変換することができます。

関連する問題