2011-05-26 15 views
10

ठीक है तो मैं इन हैश मैप्स में नया हूं लेकिन लिंक्डलिस्ट और हैश मैप्स के बारे में कुछ विचार है। यह बहुत अच्छा होगा अगर आप मुझे LinkedHashMap के बारे में कुछ सरल स्पष्टीकरण दे सकते हैं और शीर्षक के रूप में इसका मतलब यह है कि हम स्पष्ट रूप से इसे किसी प्रकार के रूप में परिभाषित कर रहे हैं?LinkedHashMap <k, v> क्या है?

उत्तर

24

एक LinkedHashMap हैश तालिका और लिंक की गई सूची का एक संयोजन है। इसमें अनुमानित पुनरावृत्ति आदेश (एक ला लिंक की गई सूची) है, फिर भी पुनर्प्राप्ति गति हैश मैप का है। पुनरावृत्ति का क्रम सम्मिलन आदेश द्वारा निर्धारित किया गया है, इसलिए आपको कुंजी/मान वापस प्राप्त होंगे ताकि वे इस मानचित्र में जोड़े गए हों। को दोबारा डालने के बाद से आपको थोड़ा सावधान रहना होगा, क्योंकि एक कुंजी मूल ऑर्डर को नहीं बदलेगी।

के लिए कुंजी और वी के लिए स्टैंड।

/* 
    Simple Java LinkedHashMap example 
    This simple Java Example shows how to use Java LinkedHashMap. 
    It also describes how to add something to LinkedHashMap and how to 
    retrieve the value added from LinkedHashMap. 
*/ 

import java.util.LinkedHashMap; 

public class JavaLinkedHashMapExample { 

public static void main(String[] args) { 

//create object of LinkedHashMap 
LinkedHashMap lHashMap = new LinkedHashMap(); 

/* 
    Add key value pair to LinkedHashMap using 
    Object put(Object key, Object value) method of Java LinkedHashMap class, 
    where key and value both are objects 
    put method returns Object which is either the value previously tied 
    to the key or null if no value mapped to the key. 
    */ 

lHashMap.put("One", new Integer(1)); 
lHashMap.put("Two", new Integer(2)); 

/* 
    Please note that put method accepts Objects. Java Primitive values CAN NOT 
    be added directly to LinkedHashMap. It must be converted to corrosponding 
    wrapper class first. 
    */ 

//retrieve value using Object get(Object key) method of Java LinkedHashMap class 
Object obj = lHashMap.get("One"); 
System.out.println(obj); 

/* 
    Please note that the return type of get method is an Object. The value must 
    be casted to the original class. 
    */ 


} 
} 
/* 
Output of the program would be 
1 
*/ 
+0

विस्तृत स्पष्टीकरण के लिए धन्यवाद – Johnydep

+0

@ जॉनीडेप आपका स्वागत है! – evilone

+0

यह वही है जो मुझे चाहिए। विस्तृत उत्तर के लिए धन्यवाद! :) – Dino55

0

सबसे बड़ा अंतर LinkedHashMap का आदेश दिया गया है। यदि आप एक इटरेटर का उपयोग करते हैं तो कुंजी और मान एक ही क्रम में होंगे, उन्हें मानचित्र में जोड़ा गया था। हैश मैप को उनके द्वारा लौटाए गए आदेश की कोई गारंटी नहीं है।

2

इसे जेनेरिक कहा जाता है। k और v को उस वास्तविक प्रकार से बदला जाना चाहिए जिसे आप स्टोर करना चाहते हैं। एक HashMap कि तारों पर पूर्णांकों नक्शे बनाने के लिए आप लिखते हैं:

LinkedHashMap<Integer,String> 
1

लिंक्ड हैशैप कुंजी ArrayLists या सरणी के समान हैं जैसे वे संग्रहीत किए गए क्रम में संग्रहीत हैं। सामान्य हैशमैप्स को उनके हैश कोड द्वारा क्रमबद्ध किया जाता है।

के = कुंजी वी = मूल्य वे किसी भी प्रकार के हो सकते हैं।

9

यह है दो डाटा संरचनाओं, का एक संकर एक LinkedList, जहां प्रविष्टि आदेश में नोड्स जो उनके तत्काल पड़ोसियों की पहुंच है की एक सूची के अंत में तत्व जोड़कर संरक्षित है, और एक HashMap, या एक Map एक का उपयोग करता है बाल्टी Lists की सरणी, जहां कुंजी के hashcode() का एक मॉड्यूलस डिवीजन शेष उस बाल्टी की सामग्री की सूची में मौजूद कुंजियों की equals() विधि के लिए क्वेरी करने के लिए प्रारंभिक बाल्टी निर्धारित करता है।

लाभ यह है कि आप LinkedList प्रकृति के कारण, प्रविष्टि के क्रम में एक HashMap में मौजूदा तत्वों चल सकता है, और आप जल्दी से (एक बड़े के लिए बहुत समय की बचत एक महत्वपूर्ण देखने में सही बाल्टी के लिए कूद कर सकते हैं संग्रह) यदि आपके पास तत्व की कुंजी है।

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