2011-03-03 11 views
14

डबल करने के लिए कनवर्ट करें।जब मैं एक डबल ArrayList मैं निम्नलिखित त्रुटि मिली लिए एक डबल सरणी बदलने की कोशिश में एक डबल सरणी ArrayList

double [] firstValueArray ; 

ArrayList <Double> firstValueList = new ArrayList (Arrays.asList(firstValueArray));

मैं एक और सूची के साथ इस सूची की तुलना कर रहा हूँ और एक और डबल चर के लिए परिणाम आवंटित।

कृपया मुझे इस त्रुटि का कारण बताएं।

+5

'के लिए (डॉउले डी: डबलअरे) arrayList.add (डी);' – bestsss

उत्तर

24

अलास, Arrays.asList(..) प्राइमेटिव के साथ काम नहीं करता है। अपाचे कॉमन्स-लैंग

Double[] doubleArray = ArrayUtils.toObject(durationValueArray); 
List<Double> list = Arrays.asList(doubleArray); 
+0

धन्यवाद बहुत बोझो। यह समस्या हल हो गई। – gishara

17

Guava के संस्करण भी कम है:

List<Double> list = Doubles.asList(doubleArray); 

संदर्भ:

नोट: यह एक varargs विधि है। सभी varargs विधियों को एक ही प्रकार की सरणी का उपयोग करके बुलाया जा सकता है (लेकिन संबंधित बॉक्स किए गए/अनबॉक्स किए गए प्रकार !!) नहीं। इन दो कॉल के बराबर हैं:

Doubles.asList(new double[]{1d,2d}); 
Doubles.asList(1d,2d); 

इसके अलावा, अमरूद संस्करण एक पूर्ण पार नहीं करता है, यह आदिम सरणी के एक जीवित सूची दृश्य है, वस्तुओं केवल जब वे एक्सेस किया जाता है करने के लिए पुरातन परिवर्तित।

ArrayList<Double> firstValueList = new ArrayList<Double>(); 
for(double d : firstValueArray) firstValueList.add(d); 
+0

varargs विधि क्या है? और कैसे दो कॉल बराबर हैं? – JAVA

+0

@ सनी तंत्र को यहां वर्णित किया गया है: [जावा ट्यूटोरियल: मनमानी तर्कों की संख्या] (http://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html#varargs)। मुख्य वाक्यांश यह है कि "यह मैन्युअल रूप से एक सरणी बनाने के लिए शॉर्टकट है" –

+0

ऐसा लगता है कि 'Doubles.asList (डबल ... बैकिंगअरे) द्वारा लौटाई गई सूची, किसी भी बदलाव की अनुमति नहीं देती है, जैसे कि' जोड़ें 'या' addAll'। दस्तावेज़ के लिए अद्यतन लिंक: https://google.github.io/guava/releases/19.0/api/docs/index.html?com/google/common/primitives/Doubles.html –

3

क्रेडिट

DoubleStream.of(doublesArray).boxed().collect(Collectors.toCollection(ArrayList::new)); 

यह एक लाइनर को किसी भी की आवश्यकता नहीं है द्विभाषी पुस्तकालयों।

12

जावा 8 स्ट्रीम एपीआई इस

DoubleStream.of(doublesArray).boxed().collect(Collectors.toList()); 

साथ हासिल की है एक ArrayList एक कार्यान्वयन के रूप में लौटने का उपयोग तो आवश्यक है, तो का उपयोग करना: जो जवाब होना चाहिए टिप्पणी के लिए bestsss को

संबंधित मुद्दे