2013-04-09 6 views
5

यह प्रिंट झूठीबनाम चार सरणी चरित्र के साथ आरंभ किया जा रहा

List vowelsList=Arrays.asList(new char[]{'a','e','i','o','u'}); 
System.out.println(vowelsList.contains('a'));//false 

यह प्रिंट सच

List vowelsList=Arrays.asList(new Character[]{'a','e','i','o','u'}); 
System.out.println(vowelsList.contains('a'));//true 

charCharacter को autoboxed है जो मैं चार सरणी initailizer..Why बजे में इस्तेमाल किया था मुझे अलग-अलग परिणाम मिल रहे हैं!

+4

क्योंकि 'char ...] को' टी ... पैराम्स 'में एक पैरामीटर के रूप में माना जाता है, जबकि' वर्ण [] 'पैरामीटर को' टी ... पैराम्स 'के लिए सरणी पैरामीटर माना जाता है। –

+3

@ लुइगी मैन्डोज़ा: यह एक उत्तर होना चाहिए। –

उत्तर

6

इसके अलावा

vowelsList.size();

दोनों के लिए

प्रिंट, और आप अंतर देखेंगे;)

बिगाड़ने:

पहली विधि के सामान्य प्रकार char[], इसलिए है आपको आकार की एक सूची मिल जाएगी। यह प्रकार List<char[]> है। आपके दूसरे कोड का सामान्य प्रकार Character है, इसलिए आपकी सूची में सरणी के रूप में कई प्रविष्टियां होंगी। प्रकार List<Character> है।


इस तरह की गलती से बचने के लिए, कच्चे प्रकार का उपयोग न करें! कोड बाद संकलन नहीं होगा:

List<Character> vowelsList = Arrays.asList(new char[]{'a','e','i','o','u'}); 

तीन लाइनों के बाद ठीक हैं:

List<char[]> list1 = Arrays.asList(new char[]{'a','e','i','o','u'}); // size 1 
List<Character> list2 = Arrays.asList(new Character[]{'a','e','i','o','u'}); // size 5 
List<Character> list3 = Arrays.asList('a','e','i','o','u'); // size 5 
+0

अच्छा संकेत ... मुझे गूंगा लग रहा है! – Anirudha

+0

अब यह अच्छा लग रहा है –

1

रूप @jlordo (+1) ने कहा कि अपनी गलती समझ कर अपनी सूची को शामिल करता है। पहले मामले में इसमें char[] प्रकार का एक तत्व होता है, ताकि इसमें char तत्व a शामिल न हो। दूसरे मामले में इसमें 5 Character तत्व 'ए', 'ई', 'i', 'o', 'u' शामिल हैं, इसलिए परिणाम true है।

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