Java 将对象添加到HashMap并将对象作为键的问题

Java 将对象添加到HashMap并将对象作为键的问题,java,Java,为什么以下代码会因编译错误而失败 class SampleClass{ } public class DemoHashMap { public static void main(String[] args) { SampleClass s1 = new SampleClass(); SampleClass s2 = new SampleClass(); Map<Object, Integer> counts = new Hash

为什么以下代码会因编译错误而失败

class SampleClass{

}

public class DemoHashMap {

public static void main(String[] args) {
        SampleClass s1 = new SampleClass();
        SampleClass s2 = new SampleClass();

        Map<Object, Integer> counts = new HashMap<Object, Integer>();
        counts.add(s1, 1);
        counts.add(s2, 2);
    }
}
class-SampleClass{
}
公共类DemoHashMap{
公共静态void main(字符串[]args){
SampleClass s1=新的SampleClass();
SampleClass s2=新的SampleClass();
映射计数=新的HashMap();
计数。添加(s1,1);
计数。添加(s2,2);
}
}

这段代码不允许我将s1和s2添加到hashmap中。在计数声明中,我已指定键可以是Object。

Map中没有
add
方法。请改用
put

counts.put(s1, 1);

请参阅:-

需要做的更正很少

首先,在
Map
中没有
add()
,请尝试
put()

其次,建议将类
SampleClass
hashCode()
equals()
用作键时重写

此外,由于您使用的是泛型,建议将映射声明为:

Map counts=newhashmap()

尝试以下操作:

Map<SampleClass, Integer> counts = new HashMap<SampleClass, Integer>();
counts.put(s1, 1)
Map counts=newhashmap();
计数。放置(s1,1)

您的意思是“放置”而不是“添加”?当您发布有关错误的问题时,可能会出现重复,请包括错误文本。此外,通过查看Map API,这个问题可以很容易地解决。