2015-02-09 14 views
8

मैं जानता हूँ कि मैं घोषणा कर सकते हैं और दोहरे कोष्ठकों का उपयोग कर एक List प्रारंभ के साथ डबल ब्रेस आरंभीकरण प्रारंभिक (देखें (1)) नेस्टेड संग्रह के साथ? मेरा लक्ष्य एक ही पंक्ति में डेटा संरचना घोषित करना और आरंभ करना है।नेस्टेड संग्रह

मैं यह भी जानना चाहता हूं कि डबल ब्रेस प्रारंभिकरण का उपयोग करते समय मुझे कुछ दोष हैं या नहीं।

+2

बस "सामान्य" प्रारंभिक कोड का उपयोग करें; डबल ब्रेस प्रारंभ करना पढ़ना मुश्किल है। कोड काम है (एक बार लिखें, कई पढ़ें)। नोट: यदि यह एक स्थिर सूची है, तो एक स्थिर प्रारंभकर्ता का उपयोग करें। – fge

+1

आप इस तरह कोड क्यों लिखना चाहते हैं? क्या आप अकेले काम करते हो – kolossus

+4

"डबल ब्रेसिज़" का उपयोग न करें, क्योंकि हर बार जब आप ऐसा करते हैं, तो आप ArrayList का बेकार सबक्लास बना रहे हैं। –

उत्तर

5

यह अच्छा विचार है, क्योंकि इसे पढ़ने के लिए मुश्किल है नहीं है, लेकिन आप निम्न कर सकते:

List<Map<Object,Object>> myList = new ArrayList<Map<Object,Object>>() {{ 
        add(new HashMap<Object, Object>() {{ 
         put(key, obj); 
        }}); 
       }}; 
+0

पढ़ने के लिए मुश्किल नहीं है, बल्कि यह भी मुश्किल है प्रदर्शन के लिए बुरा है। –

+0

@ वैंग: आपके समय और उत्तर के लिए धन्यवाद लेकिन इसमें आपने सूची को शामिल नहीं किया :( –

+2

आपका क्या मतलब है? नया ऐरेलिस्ट <मानचित्र <ऑब्जेक्ट, ऑब्जेक्ट >>() क्या है? – Bracadabra

10

बचें डबल ब्रेस प्रारंभ के रूप में यह एक) अपने सहयोगियों आश्चर्य और पढ़ने के लिए मुश्किल है, ख) हानि पहुँचाता प्रदर्शन और सी) ऑब्जेक्ट समानता के साथ समस्याएं पैदा कर सकता है (बनाए गए प्रत्येक ऑब्जेक्ट में एक अद्वितीय क्लास ऑब्जेक्ट होता है)।

यदि आप कोड शैली मार्गदर्शिका पर काम कर रहे हैं तो इस प्रकार की चाल अनुभाग में नहीं है।

यदि आप वाकई सूचियां और मानचित्र इनलाइन बनाने में सक्षम होना चाहते हैं, तो बस आगे बढ़ें और कुछ फैक्ट्री विधियां बनाएं। इस तरह दिख सकता है:

List l = Lists.of(
    Maps.of(new Entry("foo", "bar"), new Entry("bar", "baz")), 
    Maps.of(new Entry("baz", "foobar")) 
); 

हालांकि, वैंग्स उदाहरण दिखाता है कि आपके उदाहरण के लिए वाक्यविन्यास डबल ब्रेस प्रारंभिकरण के लिए कैसे है।

+1

स्वीकार करना बेहतर है, डबल ब्रेस कोड परीक्षण में मुद्दों को भी फेंक सकता है। उदाहरण के लिए, यदि यह स्थैतिक रूप से प्रारंभ किया गया है तो आप xyz का नकल कैसे करेंगे? – vikingsteve

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