2-мерный ключ hashmap для Android - PullRequest
0 голосов
/ 04 декабря 2011

Я хочу создать хэш-карту объектов и использовать двумерный ключ:

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);

1 Ответ

0 голосов
/ 04 декабря 2011

Я думаю, что для Comparable вам нужно использовать

 public int compareTo(ConversationKey  ck){}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...