【问题标题】:android 2-dimensional hashmap keyandroid二维hashmap键
【发布时间】:2011-12-04 17:04:53
【问题描述】:

我想创建对象的哈希图并使用二维键:

public HashMap<ConversationKey, ConversationItem> ConversationMap = new HashMap<ConversationKey, ConversationItem>();

对话键在哪里:

public class ConversationKey {

private String Left;
private String Right;

}

但我不完全理解我需要什么过度方法,另一篇文章说我需要 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);

【问题讨论】:

    标签: android hashmap


    【解决方案1】:

    我认为你需要使用 Comparable

     public int compareTo(ConversationKey  ck){}
    

    【讨论】:

    • 这就是我似乎无法开始工作的东西,还有另一种类型称为 Comparator - 不确定要尝试实现哪个
    • comparable 用于您想要比较的对象(使它们具有可比性)。Comparator 是一个通过覆盖相关方法来比较对象的类。Comparator 可用于例如。 with collections.sort("你的比较器类对象")
    猜你喜欢
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 2011-10-18
    • 1970-01-01
    • 2016-01-18
    • 2011-07-07
    • 2013-06-06
    相关资源
    最近更新 更多