/ / Wie wird die Map.Entry-Oberfläche korrekt verwendet und warum sind die Methoden von Map.Entry bereits implementiert? - Java, Wörterbuch, Hashmap

Wie benutze ich die Map.Entry-Schnittstelle richtig und warum sind die Methoden von Map.Entry bereits implementiert? - Java, Wörterbuch, Hashmap

Ich bin verwirrt über die Map.Entry-Oberfläche. Ich habe ein unten gezeigtes Beispiel mit Map.Entry gefunden, aber es gibt einen Fehler zurück, wenn "Map.Entry implementiert" am Ende seiner Klasse hinzugefügt wird. Außerdem sollte eine Schnittstelle keine Methoden haben, aber es gibt 5 Methoden (equals, getKey, getValue, hashCode, setValue), die in dieser Schnittstelle implementiert sind. Kann jemand erklären, was hier vor sich geht?

Basierend auf dem Java Tutorial von Oracle "IfIhre Klasse behauptet, eine Schnittstelle zu implementieren. Alle von dieser Schnittstelle definierten Methoden müssen im Quellcode erscheinen, bevor die Klasse erfolgreich kompiliert werden kann. "Da das folgende Beispiel die Map.Entry-Schnittstelle also nicht implementieren muss, ist dies nicht erforderlich Implementieren der 5 in der Java-API von Oracle aufgelisteten Methoden. Aber warum?

import java.util.HashMap;
import java.util.*;

class Dog {
String color;

Dog(String c)  color = c;
public boolean equals(Object o)
return ((Dog) o).color.equals(this.color);
public int hashCode()
return color.length();
public String toString()
return color + " dog";
}

public class TestHashMap {
public static void main(String[] args) {
HashMap<Dog, Integer> hashMap = new HashMap<Dog, Integer>();
Dog d1 = new Dog("red");
Dog d2 = new Dog("black");
Dog d3 = new Dog("white");
Dog d4 = new Dog("white");

hashMap.put(d1, 10);
hashMap.put(d2, 15);
hashMap.put(d3, 5);
hashMap.put(d4, 20);

//print size
System.out.println(hashMap.size());

//loop HashMap
for (Map.Entry<Dog, Integer> entry : hashMap.entrySet()) {
System.out.println(entry.getKey().toString() + " - "+      entry.getValue());
}
}
}

Antworten:

2 für die Antwort № 1

EIN Map.Entry ist ein Schlüssel-Wert-Paar, wie in der Ansicht zurückgegeben Map.entrySet (). Deine Klasse Dog wird als Schlüssel verwendet; es ist nicht "t" und muss nicht "a" sein Map.Entry. Die Implementierung von Map.Entry ist in der Regel ein Implementierungsdetail der Map selbst. Es ist selten, dass Sie einen implementieren müssen.