Я хочу создать хэш-карту объектов и использовать двумерный ключ:
public HashMap<ConversationKey, ConversationItem> ConversationMap = new HashMap<ConversationKey, ConversationItem>();
где ключ разговора:
public class ConversationKey {
private String Left;
private String Right;
}
но я не совсем понимаю, какие ovverridded методы мне нужны, в другом посте говорилось, что мне нужен hashcode () и equals (), но hashcode () недоступен, а автоматическое добавление нереализованных методов просто добавляет compareTo ()
Может ли кто-нибудь помочь мне создать двумерный ключевой объект, который будет использоваться для извлечения элементов из хеш-карты, предоставив в качестве ключа два строковых значения?
вот что у меня есть:
public class ConversationKey implements Comparable<ConversationKey> {
private String Left;
private String Right;
public ConversationKey(String left, String right) {
Left = left;
Right = right;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof ConversationKey) {
return Left.equals(((ConversationKey)obj).Left) &&
Right.equals(((ConversationKey)obj).Right);
}
return false;
}
@Override
public int compareTo(ConversationKey another) {
if (Left.equals(another.Left) && Right.equals(another.Right)) {
return 0;
}
return -1;
}
}
Конечная реализация:
ConversationKey ck = new ConversationKey("jack", "jane");
ConversationItem Conversation1 = ConversationMap.get(ck);