java - ArrayList<स्ट्रिंग> स्ट्रिंग[] सरणी[डुप्लिकेट] में कनवर्ट करें




(4)

इस तरह प्रयोग करें।

List<String> stockList = new ArrayList<String>();
stockList.add("stock1");
stockList.add("stock2");

String[] stockArr = new String[stockList.size()];
stockArr = stockList.toArray(stockArr);

for(String s : stockArr)
    System.out.println(s);

इस प्रश्न का उत्तर यहां दिया गया है:

मैं एंड्रॉइड पर्यावरण में काम कर रहा हूं और निम्नलिखित कोड की कोशिश की है, लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है।

String [] stockArr = (String[]) stock_list.toArray();

यदि मैं निम्नानुसार परिभाषित करता हूं:

String [] stockArr = {"hello", "world"};

यह काम करता हैं। क्या ऐसा कुछ है जो मुझे याद आ रहा है?


इसे इस्तेमाल करे

String[] arr = list.toArray(new String[list.size()]);

क्या हो रहा है कि stock_list.toArray() String[] बजाय Object[] बना रहा है और इसलिए टाइपकास्ट 1 विफल हो रहा है।

सही कोड होगा:

  String [] stockArr = stockList.toArray(new String[stockList.size()]);

या और भी

  String [] stockArr = stockList.toArray(new String[0]);

(हैरानी की बात है कि हालिया जावा रिलीज में बाद वाला संस्करण तेज है: https://.com/a/4042464/139985 )

अधिक जानकारी के लिए, List.toArray के दो ओवरलोड के लिए javadocs देखें।

(एक तकनीकी परिप्रेक्ष्य से, इस एपीआई व्यवहार / डिजाइन का कारण यह है कि List<T>.toArray() विधि के कार्यान्वयन में कोई जानकारी नहीं है कि <T> रनटाइम पर क्या है। यह सब जानता है कि कच्चा तत्व प्रकार Object । इसके विपरीत, दूसरे मामले में, सरणी पैरामीटर सरणी का मूल प्रकार देता है। (यदि आपूर्ति की गई सरणी काफी बड़ी है, तो इसका उपयोग किया जाता है। अन्यथा उसी प्रकार की एक नई सरणी और एक बड़ा आकार होगा आवंटित और परिणाम के रूप में लौट आया।)

1 - जावा में, एक Object[] एक String[] साथ संगत असाइनमेंट नहीं है। यदि यह था, तो आप यह कर सकते हैं:

    Object[] objects = new Object[]{new Cat("fluffy")};
    Dog[] dogs = (Dog[]) objects;
    Dog d = dogs[0];     // Huh???

यह स्पष्ट रूप से बकवास है, और यही कारण है कि सरणी प्रकार आमतौर पर असाइनमेंट संगत नहीं होते हैं।


जावा 8 में एक विकल्प:

String[] strings = list.stream().toArray(String[]::new);




arraylist