2015-11-04 9 views
7

इस प्रश्न पूछने के लिए खेद है लेकिन मैं जावा में नया हूं।मैं जावा हैशटेबल.containsKey को ऐरे के लिए काम करने के लिए कैसे बना सकता हूं?

Hashtable<byte[],byte[]> map = new Hashtable<byte[],byte[]>(); 
byte[] temp = {1, -1, 0}; 
map.put(temp, temp); 
byte[] temp2 = {1, -1, 0};; 
System.err.println(map.containsKey(temp2)); 

.containsKey के साथ काम नहीं करता है (के रूप में मुद्रित परिणाम "गलत" है)

Hashtable<Integer,Integer> mapint = new Hashtable<Integer, Integer>(); 
int i = 5; 
mapint.put(i, i); 
int j = 5; 
System.err.println(mapint.containsKey(j)); 

काम करता है (मुद्रित परिणाम "सही" है)

मैं समझता हूँ कि यह कुछ करने के लिए है ऑब्जेक्ट संदर्भ के साथ करें, लेकिन खोज के बाद किसी भी समाधान तक नहीं पहुंच सका ...

क्या वैसे भी मैं ऐरे प्रकार के साथ कुंजी खोजने के लिए हैशटेबल का उपयोग कर सकता हूं? मैं बस परीक्षण करना चाहता हूं कि एक विशिष्ट सरणी हैशटेबल में कुंजी के रूप में है ...

कोई भी हिट महान होगी। धन्यवाद !!!

+1

अपने विशिष्ट समस्या के लिए, यदि आप एक 'ByteBuffer',' map.put (ByteBuffer.wrap (अस्थायी), अस्थायी) के साथ सरणी लपेट कर सकते हैं; '। –

उत्तर

6

आप एक HashTable/HashMap में कुंजी के रूप में सरणियों उपयोग नहीं कर सकते हैं क्योंकि वे Object के equals के डिफ़ॉल्ट कार्यान्वयन, जो temp.equals(temp2) का मतलब ओवरराइड नहीं करें यदि और केवल यदि temp==temp2 है, जो अपने मामले में सच नहीं है।

आप अपनी कुंजी के लिए byte[] के बजाय Set<Byte> या List<Byte> का उपयोग कर सकते हैं।

उदाहरण के लिए:

Hashtable<List<Byte>,Byte[]> map = new Hashtable<List<Byte>,Byte[]>(); 
Byte[] temp = {1, -1, 0}; 
map.put(Arrays.asList(temp), temp); 
Byte[] temp2 = {1, -1, 0};; 
System.err.println(map.containsKey(Arrays.asList(temp2))); 
+0

टिप्पणी के लिए धन्यवाद! इस मामले में, मुझे वैकल्पिक विधि का उपयोग करने की आवश्यकता है, एक बेवकूफ मेथिड मैं सोच सकता हूं कि सरणी को स्ट्रिंग में परिवर्तित करना है, लेकिन यह गूंगा लगता है ... क्या इसके आसपास जाने के लिए वैसे भी है? – Jack

+0

@ जैक मेरा उदाहरण देखें। बीटीडब्लू, यदि आप कुंजी और मान समान हैं तो आप हैशटेबल का उपयोग क्यों करते हैं? आप इसके बजाए 'हैशसेट' का उपयोग कर सकते हैं। – Eran

+0

समाधान के लिए बहुत बहुत धन्यवाद। मैं कार्यरत हूं! मैं सेट या सूची की सूची का अध्ययन करूंगा ... – Jack

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