2013-07-31 1 views
13

Devo restituire un array String. Io uso Guava per dividere il String. Si prega di consultare il codice sottostanteConversione da Iterable a Array

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

restituisce un Iterable. ma ho bisogno di un String[]. C'è un modo per dare Iterator<Element> e convertirlo in Array[]. Molte grazie

risposta

18

Se si utilizza il semplice metodo Java String.split (regex), si sta bene. Restituisce una stringa [].

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

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

Non utilizzare librerie di fantasia se non ne hai bisogno.

3

È inoltre possibile utilizzare di Guava FluentIterable:

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

In guava è possibile convertire come segue

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

Se si desidera solo per accedere agli elementi Iterator come un array quindi non c'è bisogno di convertire i . È possibile accedere direttamente a questi elementi in base all'indice

es

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

Anche se la domanda dice "Convert Iterator a Array", risponde spiegano solo come convertire Iterable a Array.

Quindi, per convertire Iterator in Array con Guava è possibile utilizzare Iterators.toArray(Iterator<? extends T> iterator, Class<T> type).

0

Senza di Guava, è possibile convertire un Iterable<String> ad una matrice con qualcosa di simile

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

E 'un po' difficile scrivere una versione generica di questa funzione a causa della myriad issues with generic arrays in Java, così battistrada leggermente.