繁体   English   中英

如何正确使用Map.Entry接口,为什么已经实现了Map.Entry的方法?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM