2010-09-22 10 views
15

मैं संग्रह को तत्काल करने और इसमें कुछ आइटम जोड़ने के लिए एक कॉम्पैक्ट वाक्यविन्यास की तलाश में हूं।प्रारंभिक संग्रह को तत्काल करने के लिए कॉम्पैक्ट वाक्यविन्यास

Collection<String> collection = 
    new ArrayList<String>(Arrays.asList(new String[] { "1", "2", "3" })); 

मैं बनाया जा सकता है इस ArrayList की एक अनाम उपवर्ग का उपयोग करता है करने का एक अधिक कॉम्पैक्ट तरह से याद करने लगते हैं, तो उपवर्ग 'निर्माता में आइटम कहते हैं: मैं वर्तमान में इस वाक्य रचना का उपयोग करें। हालांकि, मुझे सटीक वाक्यविन्यास याद नहीं आ रहा है।

उत्तर

2

हो सकता है कि

Collection<String> collection = new ArrayList<String>() {{ 
    add("foo"); 
    add("bar"); 
}}; 

इसके अलावा डबल ब्रैकेट आरंभीकरण रूप में जाना जाता था।

8

देखें मुझे लगता है कि आप सोच रहे हैं के बारे में

collection = new ArrayList<String>() { // anonymous subclass 
    { // anonymous initializer 
     add("1"); 
     add("2"); 
     add("3"); 
    } 
} 

जो, एक comapcted,

collection = new ArrayList<String>() {{ add("1"); add("2"); add("3"); }} 

देता फगली, कम से कम कहने के लिए। हालांकि, Arrays.asList विधि के लिए एक संस्करण है: Arrays.asList(T...a) जो कॉम्पैसिटी और पठनीयता प्रदान करता है। एक उदाहरण के रूप में, यह निम्न कोड पंक्ति देता है:

collection = new ArrayList<String>(Arrays.asList("1", "2", "3")); // yep, this one is the shorter 

और तुम संदिग्ध उपयोग की ArrayList के एक गुमनाम उपवर्ग का निर्माण नहीं करतीं नोटिस।

0

हो सकता है कि यह सिर्फ मुझे है, लेकिन मैं उलझी चीजों के बिंदु को देखने न, विशुद्ध रूप से छोटी/तेजी से कोड लिखने की खोज में। कोड की मामूली कम लाइनों को टाइप करने और कहीं भी आसान डीबगिंग/संशोधित करने की पसंद को देखते हुए मुझे पूरा यकीन है कि मैं दूसरा विकल्प चुनूंगा।

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

1

आप एक उपयोगिता समारोह बना सकते हैं:

@SafeVarargs 
public static <T> List<T> listOf(T ... values) { 
    return new ArrayList<T>(Arrays.asList(values)); 
} 

तो आप इसे पसंद कह सकते हैं:

collection = MyUtils.listOf("1", "2", "3"); 

इस तरह, आप बहुत आसानी से एक सूची को पॉप्युलेट कर सकते हैं और अभी भी यह परिवर्तनशील रखने ।

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