2012-12-15 28 views
10

सेट किया गया है मैंने कुछ आदेश पर हैश मैप सेट किया है लेकिन यह एक अजीब क्रम पर पुनरावृत्त है!Iashating हैश मैप को क्रमशः

कृपया नीचे दिए गए कोड पर विचार करें:

HashMap<String, String> map = new HashMap<String, String>(); 
map.put("ID", "1"); 
map.put("Name", "the name"); 
map.put("Sort", "the sort"); 
map.put("Type", "the type"); 

... 

for (String key : map.keySet()) { 
    System.out.println(key + ": " + map.get(key)); 
} 

और परिणाम:

Name: the name 
Sort: the sort 
Type: the type 
ID: 1 

मैं इसे पुनरावृति करने के क्रम में मैं प्रविष्टियों डाल दिया है की जरूरत है। किसी भी मदद की सराहना की जाएगी।

+3

LinkedHashMap का उपयोग करने का प्रयास करें http://stackoverflow.com/questions/683518/java-class-that-implements-map-and-keeps-insertion-order –

+1

यह एक * अपरिभाषित * ऑर्डर में पुनरावृत्त है। जावाडोक देखें। यदि आप ऑर्डर करना चाहते हैं, तो मैप कार्यान्वयन का उपयोग करें जो इसे प्रदान करता है। – EJP

उत्तर

18

क्रम चाबियाँ आप जो, जब तक आप कुछ अजीब था, ज्यादातर यादृच्छिक होने जा रहा है डालने कर रहे हैं में hashCode() फ़ंक्शन के परिणाम पर निर्भर करता है (: LinkedHashMap जो अतिरिक्त प्रविष्टि के आदेश को याद रखता है साथ HashMap बदलें लेकिन लगातार)। आप जो खोज रहे हैं वह एक क्रमबद्ध मानचित्र है जैसे LinkedHashMap

यदि आप विवरण में रुचि रखते हैं तो hashtables कैसे काम करें इस बारे में थोड़ा सा पता लगाएं।

20

इस प्रकार HashMap आंतरिक रूप से काम करता है।

Map<String, String> map = new LinkedHashMap<String, String>();