[英]How to use Map.Entry interface correctly, and why are Map.Entry's methods implemented already?
我对使用Map.Entry接口感到困惑。 我找到了一个使用Map.Entry的示例,如下所示,但是如果在其类的末尾添加了“ implements Map.Entry”,它将返回错误。 另外,接口不应该实现其方法,但是在此接口中实现了5个方法(等于,getKey,getValue,hashCode,setValue)。 有人可以解释这是怎么回事吗?
此外,基于Oracle的Java教程,“如果您的类声称要实现一个接口,则在该类成功编译之前,该接口定义的所有方法必须出现在其源代码中。” 因此,我想由于以下示例不需要实现Map.Entry接口,因此无需实现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
是一个键-值对,如在视图Map.entrySet()中返回的那样 。 您的班级Dog
被用作钥匙; 不是,也不必是Map.Entry
。 Map.Entry
的实现通常是Map
本身的实现细节。 很少需要实现一个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.