2013-07-31 17 views
13

Ich muss ein String Array zurückgeben. Ich benutze Guava, um die String zu teilen. Bitte beachten Sie den Code untenConvert Iterable in Array

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

es ein Iterable zurückgibt. aber ich brauche ein String[]. Gibt es eine Möglichkeit, Iterator<Element> zu geben und das zu Array[] zu konvertieren. Vielen Dank

Antwort

18

Wenn Sie die einfache Methode Java String.split (regex) verwenden, geht es Ihnen gut. Es gibt einen String [] zurück.

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

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

Verwenden Sie keine ausgefallenen Bibliotheken, wenn Sie sie nicht benötigen.

3

Sie können auch Guava die Verwendung FluentIterable:

FluentIterable.from(Splitter.on(":").split(mystring)).toArray(String.class) 
0

In Guave Sie können es wie folgt konvertieren

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

Wenn Sie nur die Iterator Elemente wie ein Array zugreifen wollen, dann keine Notwendigkeit zu konvertieren . Sie können direkt auf diese Elemente durch den Index zugreifen

beispiels

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

Auch wenn die Frage sagt „Convert Iterator Array“, antwortet nur erklären, wie Iterable zu Array konvertieren.

Um Iterator in Array mit Guava zu konvertieren, können Sie also Iterators.toArray(Iterator<? extends T> iterator, Class<T> type) verwenden.

0

Ohne Guava, könnten Sie eine Iterable<String> auf ein Array mit so etwas wie dieses

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

Es ist ein bisschen schwer zu schreiben eine generische Version dieser Funktion aufgrund der myriad issues with generic arrays in Java, so treten leicht umwandeln.