2013-08-11 8 views
7

इसलिए मैंने एक हैशैप बनाया है, लेकिन मुझे दर्ज की गई पहली कुंजी प्राप्त करने की आवश्यकता है।हैश मैप में पहली चीज़ को पहली बार प्राप्त करना?

पहले::

public static Map<String, Inventory> banks = new HashMap<String, Inventory>(); 

दूसरा:

for(int i = 0; i < banks.size(); i++) { 
    InventoryManager.saveToYaml(banks.get(i), size, //GET HERE); 
} 

यह // यहाँ मैं hasmap से स्ट्रिंग प्राप्त करना चाहते हैं प्राप्त कहाँ कहते हैं इस कोड मैं का उपयोग कर रहा है। सहायता के लिए धन्यवाद।

उत्तर

14

HashMap कुंजी के सम्मिलन के आदेश को प्रबंधित नहीं करता है।

LinkedHashMap का उपयोग किया जाना चाहिए क्योंकि यह पूर्वानुमानित पुनरावृत्ति आदेश प्रदान करता है जो आम तौर पर उस क्रम में होता है जिसमें कुंजी को मानचित्र (सम्मिलन-क्रम) में डाला जाता है।

आप अपने LinkedHashMap पर फिर से शुरू करने के लिए MapEntry विधि का उपयोग कर सकते हैं। तो यहां आपको अपने कोड में क्या करना है। तो बस इस तरह यह पुनरावृति

public static Map<String, Inventory> banks = new LinkedHashMap<String, Inventory>(); 

और::

for (Map.Entry<String, Inventory> entry : banks.entrySet()) { 
    InventoryManager.saveToYaml(entry.getValue(), size, entry.getKey()); 
} 

तुम सिर्फ LinkedHashMap के पहले तत्व की जरूरत है तो आप ऐसा कर सकते हैं तो: सबसे पहले अपने बैंकों नक्शा HashMap से LinkedHashMap करने के लिए बदल

banks.entrySet().iterator().next(); 
+3

यह प्रश्न का उत्तर नहीं देता है। – Bohemian

+0

@ बोहेमियन ने अधिक जानकारी के साथ उत्तर अपडेट किया। –

+0

हम्म, आपने अभी मेरा जवाब कॉपी किया है। कम से कम आप मुझे क्रेडिट दे सकते हैं ... –

6

शीर्षक में प्रश्न का उत्तर देना: पहला महत्वपूर्ण यह है कि डाला गया था प्राप्त करने के लिए, ऐसा करते हैं:

public static Map<String, Inventory> banks 
    = new LinkedHashMap<String, Inventory>(); 

String firstKey = banks.keySet().iterator().next(); 

ध्यान दें कि मानचित्र पर पुनरावृत्ति करते समय आपको उसी प्रविष्टि आदेश को संरक्षित करने के लिए LinkedHashMap का उपयोग करना होगा। क्रमशः प्रत्येक कुंजी पर पुनरावृत्ति करने के लिए, पहले से शुरू करें, (और मुझे विश्वास है कि यह वही है जो आप चाहते थे):

for (Map.Entry<String, Inventory> entry : banks.entrySet()) { 
    InventoryManager.saveToYaml(entry.getValue(), size, entry.getKey()); 
} 
संबंधित मुद्दे