相关疑难解决方法(0)

java.util.Map的getOrDefault()如何工作?

我注意到,如果我执行map.getOrDefault("key1",new Object()),即使key1在地图中存在对象,new Object()也会创建.虽然它不是由方法返回但它仍然创建它.例如,

public class Empl {
    private int id;
    private String name;

    public Empl(String name) {
        // TODO Auto-generated constructor stub
        System.out.println(name);
        this.name = name;
    }
    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return name+id;
    }
}
Run Code Online (Sandbox Code Playgroud)

运行以下,

Map<String, Empl> map = new HashMap<String, Empl>();
Empl imp = new Empl("timon");
map.put("1", imp);
System.out.println(map.getOrDefault("1", new Empl("dumnba")));
Run Code Online (Sandbox Code Playgroud)

给出这个输出:

timon
dumnba
timon0
Run Code Online (Sandbox Code Playgroud)

仅当地图中没有默认对象时,才应该创建默认对象吗?如果没有,是什么原因?

java

17
推荐指数
3
解决办法
3万
查看次数

标签 统计

java ×1