Java 为什么HashMap为此程序生成输出0?
我不明白这个java程序是如何将输出显示为零的。我认为应该是1。据我所知,它不允许同一把钥匙被多次使用。有人能详细解释一下吗Java 为什么HashMap为此程序生成输出0?,java,Java,我不明白这个java程序是如何将输出显示为零的。我认为应该是1。据我所知,它不允许同一把钥匙被多次使用。有人能详细解释一下吗 import java.util.HashMap; import java.util.Map; public class Names { private Map<String, String> m = new HashMap<>(); public void names(){ m.put("Mickey", "M
import java.util.HashMap;
import java.util.Map;
public class Names {
private Map<String, String> m = new HashMap<>();
public void names(){
m.put("Mickey", "Mouse");
m.put("Mickey", "Mouse");
}
public int size(){
return m.size();
}
public static void main(String[] args) {
Names names = new Names();
System.out.println(names.size());
}
}
import java.util.HashMap;
导入java.util.Map;
公共类名{
私有映射m=新的HashMap();
公共无效名称(){
m、 放置(“米老鼠”);
m、 放置(“米老鼠”);
}
公共整数大小(){
返回m.size();
}
公共静态void main(字符串[]args){
名称=新名称();
System.out.println(names.size());
}
}
输出:0问题在于,您编写的向HashMap添加对象的方法从未运行过,您可能打算执行以下操作之一:
public void names(){
m.put("Mickey", "Mouse");
m.put("Mickey", "Mouse");
}
需要
public Names(){
m.put("Mickey", "Mouse");
m.put("Mickey", "Mouse");
}
或
需要
public static void main(String[] args) {
Names names = new Names();
names.names();
System.out.println(names.size());
}
问题是,您编写的向HashMap添加对象的方法从未运行过,您可能打算执行以下操作之一:
public void names(){
m.put("Mickey", "Mouse");
m.put("Mickey", "Mouse");
}
需要
public Names(){
m.put("Mickey", "Mouse");
m.put("Mickey", "Mouse");
}
或
需要
public static void main(String[] args) {
Names names = new Names();
names.names();
System.out.println(names.size());
}
在代码中
public void names(){
m.put("Mickey", "Mouse");
m.put("Mickey", "Mouse");
}
不是java类的构造函数。
你应该这样定义它
public Names(){
m.put("Mickey", "Mouse");
m.put("Mickey", "Mouse");
}
阅读此链接:在您的代码中
public void names(){
m.put("Mickey", "Mouse");
m.put("Mickey", "Mouse");
}
不是java类的构造函数。
你应该这样定义它
public Names(){
m.put("Mickey", "Mouse");
m.put("Mickey", "Mouse");
}
阅读此链接:在检查地图大小之前,调用
names()
填充地图如何?您的程序从不向地图添加任何内容。它创建一个空贴图,然后打印其大小。当然,它是0。从教学角度讲,您之所以会出现此错误,是因为您将非构造函数方法命名为与类相同的方法,如果您将方法名称从names
更改为putNames
,您的错误将显而易见。@user1803551“您将非构造函数方法命名为与类相同的方法”不是真的,这个案子仍然重要;P@Tom这就是为什么我说的是教育学而不是技术学。我建议OP有意义地命名他的方法。在检查大小之前,调用names()
填充映射如何?您的程序从不向映射添加任何内容。它创建一个空贴图,然后打印其大小。当然,它是0。从教学角度讲,您之所以会出现此错误,是因为您将非构造函数方法命名为与类相同的方法,如果您将方法名称从names
更改为putNames
,您的错误将显而易见。@user1803551“您将非构造函数方法命名为与类相同的方法”不是真的,这个案子仍然重要;P@Tom这就是为什么我说的是教育学而不是技术学。我建议OP有意义地命名他的方法。