2013-07-31 35 views
13

我需要返回String陣列。我使用番石榴拆分String。請參閱下面的代碼轉換可迭代到陣列

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

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

番石榴可以按如下

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

轉換它,如果你只是想訪問迭代器的元素,如一個數組,那麼無需轉換。您可以通過索引

直接訪問這些元素e.g

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

這些問題即使說「轉換迭代器陣列」,答案只能解釋如何可迭代轉換爲數組。

所以,迭代器轉換爲磁盤陣列和番石榴可以用Iterators.toArray(Iterator<? extends T> iterator, Class<T> type)

0

沒有番石榴,你可以一個Iterable<String>轉換成數組像這樣的東西

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

這是一個有點很難寫這個功能的通用版本,由於myriad issues with generic arrays in Java,所以小心行事。