2012-09-06 10 views
8

के साथ एक हैशप पॉप्युलेट करना मैंने एक समस्या में भाग लिया है जिसे मुझे पहले से निपटना नहीं था। मैं जावा में डेटाबेस के लिए एक पैच लिख रहा हूं जो मूल रूप से कुछ पंक्तियों में संग्रहीत डेटा को परिवर्तित कर रहा है। ऐसा करने के लिए मेरे पास एक रूपांतरण तालिका है जो मुझे बताती है कि मूल्य क्या बनते हैं।पूर्वनिर्धारित मानों (जावा)

उदाहरण, अगर मैं या तो "आरसी", "एसी", "जीएच" में पढ़ता हूं -> मान को "टी 1" में अपडेट करें। (ये केवल यादृच्छिक उदाहरण हैं, यह मूल रूप से एक स्ट्रिंग को दूसरे में परिवर्तित कर रहा है।)

मुझे इन रूपांतरणों को संग्रहीत करने का एक अच्छा तरीका चाहिए। मैं एक हैशपैप सोच रहा था: कुंजी, VALUE: (आरसी, टी 1) (एसी, टी 1) (जीएच, टी 1) और इसी तरह से।

अब, दर्जनों और इनमें से दर्जनों हैं। जब पैच शुरू होता है तो इस हैशप को पॉप्युलेट करने का एक अच्छा साफ तरीका क्या है?

उत्तर

18

मैं HashMap

सेट करते समय उदाहरण

private static final Map<String, String> m = new HashMap<String, String>() {{ 
    put("RC", "T1"); 
    put("AC", "T1"); 
}}; 

के लिए तो फिर तुम यह सुनिश्चित करें कि सब कुछ अपने कोड में एक साथ सेट किया गया है wuld initialisation करना होगा।

मुझे लगता है कि @ नंबारी एक अच्छा बिंदु बनाता है हालांकि शायद एक स्ट्रिंग के बजाय सूची के रूप में मूल्य होने के साथ। यह तब आपकी चाबियाँ और मूल्यों को स्वैप करता है।

जैसे

private static final Map<String, List<String>> m = new HashMap<String, List<String>>() {{ 
    put("T1", Arrays.asList("RC", "AC"); 
}}; 
+0

धन्यवाद! मैं यही सोच रहा था (आपका पहला उदाहरण)। मैं उम्मीद कर रहा था कि ऐसा करने का एक बहुत ही आसान तरीका हो सकता है लेकिन मुझे लगता है कि मुझे नीचे उतरना और गंदा होना है। पुष्टि के लिए आरएनजे की सराहना की। – user1652875

+0

@ user1652875 मुझे लगता है कि यह घोषणापत्र के समान स्थान पर आरंभिक होने के साथ थोड़ा सा मामूली है। फिर आप निश्चित रूप से जानते हैं कि मानचित्र में कुछ डेटा है। – RNJ

0

अन्य तरीके से हो सकता है, RC,AC,GH के रूप में मूल्य और टी 1 हैशैप के लिए कुंजी के रूप में, इस तरह आप मानचित्र में प्रविष्टियों की संख्या को कम कर सकते हैं।

+0

लेकिन, इस तरह के ढांचे में एक देखने की जटिलता नहीं होगा किसी भी अच्छे - कैसे आप इस तरह के मानचित्र खोज करेंगे तो, कहते हैं कि जब "आर सी" के लिए एक स्थानापन्न के लिए खोज रहे हैं? –

+0

मैं मानता हूं, यदि आपके पास कम कुंजी हैं (जैसे टी 1, टी 2 इत्यादि), तो यह आसान तरीका है। यदि कम कुंजियां आप एंट्रीसेट() प्राप्त कर सकते हैं और इसके साथ खेल सकते हैं। यदि चाबियों की संख्या भी अधिक है, तो लुकअप समय अधिक होगा। दोबारा, यह व्यापार-बंद है, एक जगह पर सादगी दूसरे छोर पर जटिलता पैदा करती है। – kosa

0

आप Apache Commons से PropertiesConfiguration उपयोग कर सकते हैं।

मूल्य में मूल्य वितरणकर्ता हो सकते हैं और फिर टोकन की सूची के रूप में व्याख्या की जाएगी। डिफ़ॉल्ट मान डेलीमीटर अल्पविराम 'है,'। तो निम्नलिखित संपत्ति परिभाषा

key = This property, has multiple, values 
संबंधित मुद्दे