【问题标题】:calling containsKey on a hashmap with custom class使用自定义类在 hashmap 上调用 containsKey
【发布时间】:2012-10-08 02:47:36
【问题描述】:

我有一个 Color 类,我将其放入 hashmap 中。我想在 hashmap 上调用containsKey 以确保对象是否已经存在于 hashmap 中

颜色类

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

哈希映射

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

因为c1name 红色。我希望 System.out 返回 true,因为地图中已经存在的键 c 具有 name 红色

如何做到这一点?

【问题讨论】:

    标签: java hashmap


    【解决方案1】:

    您的自定义类 Color 应该覆盖 equals()hashcode() 方法以实现您想要的。

    当您使用自定义对象作为collections 的键并希望使用对象进行查找时,您应该正确地覆盖equals()hashcode() 方法。

    另请阅读:

    Overriding equals and hashCode in Java

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-05
      相关资源
      最近更新 更多