Wie funktioniert java.util.Karte getOrDefault() funktioniert?

Habe ich bemerkt, dass wenn ich die Karte.getOrDefault("key1", new Object()), auch wenn Objekt vorhanden ist, für key1 in der Karte, new Object() erstellt. Obwohl es nicht von der Methode zurückgegeben, aber es trotzdem schafft. Zum Beispiel,

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;
    }
}

laufen folgende,

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")));

gibt diese Ausgabe:

timon
dumnba
timon0

Sollte nicht das Standard-Objekt nur erstellt werden, wenn es nicht auf der Karte ? Was ist der Grund, wenn nicht ?

Hast du den Quellcode? (Ich denke, es gibt keinen Weg, der neue wird nicht ausgeführt, bevor der Anruf)
Übergeben Sie das Standard-Objekt in der getOrDefault Methode. Sie schaffen Sie sich selbst durch das schreiben new Empl("dumnba").

InformationsquelleAutor Manoj Suthar | 2017-05-02

Schreibe einen Kommentar