2012-10-08 6 views
8

के साथ हैशैप पर है, मेरे पास कलर क्लास है जिसे मैं हैशपैप में डाल रहा हूं। मैं hashmap पर containsKey कॉल करने के लिए सुनिश्चित करने के लिए वस्तु पहले से ही hashmapकॉलिंग में कस्टम क्लास

रंग वर्ग

public class Color { 
    public String name; 
    Color (String name) {this.name = name;} 
    //getters setters for name 
} 

HashMap

HashMap<Color, List<String>> m = new HashMap<Color, List<String>>(); 
Color c = new Color("red"); 
m.put(c, new ArrayList<String>()); 
Color c1 = new Color("red"); 
System.out.println(m.containsKey(c1)); //I'd like to return this as true 

c1 के बाद से में मौजूद है name लाल है या नहीं करना चाहते हैं। मुझे System.out को वापस लौटना होगा क्योंकि c में पहले से मौजूद कुंजी है, name लाल

यह कैसे प्राप्त किया जा सकता है?

उत्तर

13

आपकी कस्टम कक्षा Color आपको जो चाहिए वो प्राप्त करने के लिए equals() और hashcode() विधियों को ओवरराइड करना चाहिए।

आप collections के लिए कुंजी के रूप में कस्टम वस्तुओं का उपयोग कर रहे हैं और वस्तु का उपयोग कर देखने करना चाहते हैं, तो आप ठीक ढंग से equals() और hashcode() तरीकों ओवरराइड करना चाहिए।

भी पढ़ें:

Overriding equals and hashCode in Java