0

在爪哇。我想存储用户定义的对象和与之相关的整数。我应该使用哪种数据类型?我已经尝试过 HashMap,但显然它无法存储没有 equals() 方法的对象

4

2 回答 2

2

我已经尝试过 HashMap,但显然它无法存储没有 equals() 方法的对象

更准确地说,如果不满足以下两个条件之一,就不能使用对象作为 Map 的键:-

  • 覆盖equalsand hashcode, or
  • 不覆盖它们。

因此,您可以轻松地将对象用作键,而无需根据第二个条件使用 equals 方法。

但是,如果您希望根据新创建的对象找到您的密钥,最好遵循第一个条件。因为方法的默认实现equals比较对象的引用值而不是内容本身。

于 2012-12-23T17:43:16.943 回答
0

您应该坚持使用哈希映射。它适用于所有情况。

这是用户定义的一些类

   public class UserDefinedObject(){
    }

这是这个类与 HashMap 的用法

import java.util.HashMap; 
import java.util.Map;

public class Main {

    public static void main(String[] args) {
        Map<UserDefinedObject, Integer> stuff = new HashMap<UserDefinedObject, Integer>();
        UserDefinedObject userDefinedObject = new UserDefinedObject();
        stuff.put(userDefinedObject, 1);
        System.out.println(stuff.get(userDefinedObject));
    } 
}
于 2012-12-24T02:11:24.110 回答