为什么HashMap为这个程序生成输出0?

时间:2015-12-12 14:20:46

标签: 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", "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());
    }
} 

输出:0

2 个答案:

答案 0 :(得分:3)

问题在于,您编写的用于向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();
    System.out.println(names.size());
}

需要

public static void main(String[] args) {
    Names names = new Names();
    names.names();
    System.out.println(names.size());
}

答案 1 :(得分:0)

在您的代码中

public void names(){
    m.put("Mickey", "Mouse");
    m.put("Mickey", "Mouse");
}

不是java类的构造函数。 您应该将其定义为

public Names(){
    m.put("Mickey", "Mouse");
    m.put("Mickey", "Mouse");
}

请阅读此链接:https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html