2011-10-15 9 views
7

वहाँ एक रास्ता वैसा ही जैसे एक स्ट्रिंग सरणी सुविधा को प्रारंभ कर सकते हैं के रूप में महत्वपूर्ण मूल्य जोड़े में जावा में एक स्थिर अंतिम Hashtable लिखने के लिए है:एक प्रारंभ स्थिर hashtable लेखन सुंदर ढंग से

String [] foo = {"A","AB"}; 

मूल रूप से होने नहीं कर रहा है कि मैं क्या मतलब है शब्द लिखने के लिए कुंजी के लिए "डाल": मूल्य जोड़े लेकिन इसके बजाय कुछ ऐसा हो सकता है:

Hashtable<String, String> foo = {"JJ":"222","KK":"222"} 

जो IMO अधिक सुरुचिपूर्ण लग रहा है।

(मैं आरंभीकरण एक स्थिर ब्लॉक में अवश्य होना चाहिए कि पता है। मैं अब के लिए है कि बाहर जा रहा हूँ)

उत्तर

7

नहीं है, जावा मानचित्र शाब्दिक नहीं है, लेकिन यह सरणी शाब्दिक है।

static final Map<String, String> map; 

static { 
    map = new HashMap<String, String>(); 
    String[][] pairs = { 
     {"foo", "bar"}, 
     {"x", "y"} 
    }; 
    for (String[] pair : pairs) { 
     map.put(pair[0], pair[1]); 
    } 
} 

बेशक यह वास्तव में सरल प्रतिलिपि करने के लिए कुछ भी जोड़ने नहीं है और put समाधान पेस्ट, और यह अच्छी तरह से काम नहीं करता है, तो अपने कुंजी और मान प्रकार ही नहीं हैं।

-1

नहीं, आप की तरह कुछ के लिए देख रहे सी # के collection initializers, जो वर्तमान में जावा में मौजूद नहीं है ।

आप थोड़ा टाइपिंग सहेजने के लिए अज्ञात वर्ग का उपयोग कर सकते हैं, लेकिन आपको अभी भी put लिखना है।

7

आप उपयोग कर सकते हैं अमरूद के ImmutableMap:

map = ImmutableMap.of(key1, value1, key2, value2); 
+0

+1 अच्छा स्रोत है: डी –

8

एक अनाम भीतरी वर्ग आप डबल ब्रेस आरंभीकरण, जो कुछ मामलों में उपयोगी है देना होगा:

static final Map<String, String> map = new HashMap<String, String>() {{ 
    put("foo", "bar"); 
    put("x", "y"); 
}}; 

किसी भी मामले में, @ michael667 का जवाब शायद सबसे अच्छा

+0

पसंदीदा समाधान: स्थैतिक चर के नीचे प्रारंभिक कोड को दाएं स्थानांतरित करता है। कोई फर्क नहीं पड़ता कि आप सोर्स कोड ऑटो फॉर्मेटिंग (सॉर्ट सदस्य) के साथ क्या करते हैं। केवल शुद्ध मानक जावा libs का उपयोग करता है। –

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