2011-07-05 16 views
36

मैं वर्तमान में एक ऐसा प्रोग्राम बनाने की कोशिश कर रहा हूं जो क्रियाओं को स्पैनिश में जोड़ता है। मैंने एक हैश टेबल बनाया है जिसमें ऑब्जेक्ट क्रिया का एक कुंजी और तात्कालिकता है। कुंजी एक स्ट्रिंग है जिसमें क्रिया का infinitive रूप है (उदाहरण के लिए, "hablar")।हैश मैप से चाबियों की सूची कैसे वापस करें?

public class VerbHashMap { 

    HashMap<String, Verb> verbHashMap; 

    public VerbHashMap(){ 
     verbHashMap = new HashMap(); 
    } 
} 

HashMap में प्रत्येक क्रिया के प्रमुख क्रिया की क्रिया के साधारण रूप पर आधारित है: इस कोड को मैं अब तक हैश नक्शे के लिए होता है। उदाहरण के लिए, स्ट्रिंग "हैब्बार" स्पैनिश क्रिया के लिए कुंजी है। कक्षा वर्ब में getInfinitive() नामक एक विधि है जो एक स्ट्रिंग देता है जिसमें क्रिया का infinitive रूप होता है।

public boolean addVerb(Verb verb){ 
    if(verbHashMap.containsValue(verb.getInfinitive()){ 
     return false; 
    } 
    else{ 
     verbHashMap.put(verb.getInfinitive(), verb); 
     return true; 
    } 
} 

सवाल सबसे कारगर तरीका एक विधि है कि वर्णमाला के क्रम में हैश मानचित्र में सभी क्रियाओं की सूची लौटाता है बनाने के लिए क्या है? क्या मुझे विधि में एक ऐरेलिस्ट लौटाया जाना चाहिए जिसमें हैश मैप में सभी ऑब्जेक्ट्स की चाबियाँ शामिल हों? या इसके बारे में जाने के लिए एक और अधिक कुशल तरीका है?

+0

रास्ता मूल्य के अस्तित्व पहले के लिए अपने 'addVerb()' विधि चेक, क्रिया कुंजी नहीं होना चाहिए? – Marcelo

उत्तर

68

की सभी कुंजियों के साथ सेट को वापस करने के लिए keySet() विधि का उपयोग करें।

यदि आप अपना नक्शा आदेश देना चाहते हैं तो आप TreeMap का उपयोग कर सकते हैं।

+1

मैं चाबियों की सूची कैसे प्राप्त कर सकता हूं, सेट नहीं? क्योंकि मैप किए जाने के बाद मुझे अलग-अलग कुंजियों तक पहुंचने की ज़रूरत है। – gonephishing

+4

@gonephishing आप उदाहरण के लिए एक ArrayList के निर्माता के लिए पैरामीटर के रूप में सेट का उपयोग कर सकते हैं .. – Marcelo

5
map.keySet() 

आपको सभी चाबियाँ वापस कर देगा। यदि आप चाबियाँ सॉर्ट करना चाहते हैं, तो आप एक वृक्ष मैप

34

map.keySet() का उपयोग कर सकते हैं, तो आप कुंजी का एक सेट प्राप्त कर सकते हैं। तब से List में इस सेट को परिवर्तित:

List<String> l = new ArrayList<String>(map.keySet()); 

और फिर कुंजी का उपयोग करने के l.get(int) विधि का उपयोग करें।

पुनश्च: - स्रोत Most concise way to convert a Set<String> to a List<String>

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