我对使用 Map.Entry 接口(interface)感到困惑。我找到了一个使用 Map.Entry 的示例,如下所示,但如果在其类末尾添加“implements Map.Entry”,则会返回错误。另外,接口(interface)不应该实现其方法,但该接口(interface)中实现了 5 个方法(equals、getKey、getValue、hashCode、setValue)。有人能解释一下这是怎么回事吗?
此外,根据 Oracle 的 Java 教程,“如果您的类声明实现一个接口(interface),则在该类成功编译之前,该接口(interface)定义的所有方法都必须出现在其源代码中。”所以我想既然下面的例子不需要实现Map.Entry接口(interface),那么就没有必要实现Oracle的Java API中列出的5个方法。但为什么呢?
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());
}
}
}
最佳答案
Map.Entry
是一个键值对,如 View Map.entrySet() 中返回的那样。您的类 Dog
被用作 key ;它不是,也不需要是 Map.Entry
。 Map.Entry
的实现通常是 Map
本身的实现细节。您很少需要实现一个。
关于java - 如何正确使用Map.Entry接口(interface),为什么Map.Entry的方法已经实现了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28492977/