Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么HashMap为此程序生成输出0?_Java - Fatal编程技术网

Java 为什么HashMap为此程序生成输出0?

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

我不明白这个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", "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有意义地命名他的方法。