सामान्य कुंजी को संभालने के लिए एक हैश फ़ंक्शन

जेनेरिक कुंजी को संभालने के लिए हैश फ़ंक्शन लिखना संभव है या क्या प्रकार को निर्दिष्ट करना है? मैं एक जेनेरिक क्लास के लिए हैश टेबल लिखने की कोशिश कर रहा हूं जो कुंजी और उनके मूल्य को स्टोर करता है लेकिन मुझे मुश्किल समय शुरू हो रहा है।

बीनस्टोर बीन जोड़े के मूल्यों को स्टोर करता है एक बीन जोड़ी टी, एन प्रकारों का एक वस्तु है यानी यह टी प्रकार का पैरामीटर है और एन प्रकार का दूसरा पैरामीटर है

public class beanStore implements beanFuncs{
private Integer cap;

public beanStore(Integer number){cap=number;}

public int hfunc(T key){
//generates hashCode of key 
}

}

और यहां बीनफनक क्लास है

public interface beanFuncs extends Iterable{
public boolean hasKey(T key);
.
.
.
public int size();
public Iterator iterator();
}
0
क्या आप उन बीन्स को प्रदान कर सकते हैं जिन्हें आप स्टोर करना चाहते हैं?
जोड़ा लेखक sp00m, स्रोत

1 उत्तर

HashMap inherently deals with generics. A generic type can take on any object, so what HashMap does is call that object's hashCode().

If you're trying to group multiple types of objects together, you can handle that via generic bounds, ie if you want to have a map that can take objects that are comparable to each other, you can do so via: HashMap, K>.

एक और विशिष्ट मामले में, आप उन वस्तुओं के सेट को समूहित कर सकते हैं जिन्हें आप संभालना चाहते हैं और उन्हें एक इंटरफ़ेस लागू करना या कुछ सुपरक्लास का विस्तार करना है।

लंबी कहानी छोटी है, किसी सामान्य प्रकार के लिए हैश फ़ंक्शन लिखना समझ में नहीं आता है, प्रत्येक ऑब्जेक्ट को अपने हैशकोड को संभालने दें। आप एक सामान्य हैश नहीं लिख सकते हैं, क्योंकि हैशकोड() के पास equals() वाला अनुबंध है, और यह सामान्य जेनेरिक लिखने के लिए समझ में नहीं आता है बराबर() या हैशकोड() - ये विधियां ऑब्जेक्ट विशिष्ट होनी चाहिए।

3
जोड़ा