2013-07-31 35 views
13

मुझे String सरणी वापस करने की आवश्यकता है। मैं String को विभाजित करने के लिए गुवा का उपयोग करता हूं। कृपया नीचे दिए गए कोड को देखेंIterable से Array

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

यह Iterable देता है। लेकिन मुझे String[] की आवश्यकता है। Iterator<Element> देने का कोई तरीका है और इसे Array[] में परिवर्तित करें। बहुत धन्यवाद

उत्तर

22

गुवा में Iterables.toArray(Iterable<? extends T> iterable, Class<T> type) विधि का उपयोग करें।

+1

Iterables # toArray सार्वजनिक नहीं है – guai

+0

@guai, हाँ, यह है। – falmp

+0

क्या आप जानते हैं कि इस तरह का एक कोड है लेकिन बिना अमरूद के? –

18

यदि आप सादा जावा स्ट्रिंग.split (regex) विधि का उपयोग करते हैं, तो आप ठीक हैं। यह एक स्ट्रिंग [] देता है।

"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); 

परिवर्तित कर सकते हैं तो आप सिर्फ एक सरणी तो कन्वर्ट करने के लिए कोई ज़रूरत नहीं की तरह इटरेटर तत्वों का उपयोग करना चाहते हैं । आप सीधे सूचकांक

द्वारा इन तत्वों का उपयोग कर सकते, उदा,

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

हालांकि सवाल कहते हैं, "सरणी के लिए इटरेटर कन्वर्ट", जवाब केवल कैसे सरणी के Iterable कन्वर्ट करने के लिए समझाने की।

तो, गुवा के साथ इटरेटर को ऐरे में परिवर्तित करने के लिए आप 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, की वजह से इस समारोह की एक सामान्य संस्करण लिखने के लिए इतना हल्के से चलने जैसे परिवर्तित कर सकते हैं।