gpt4 book ai didi

java - 为什么在 HashTable ADT 的实现中有一个嵌套类(来自教科书的代码)?

转载 作者:行者123 更新时间:2023-12-02 04:09:32 25 4
gpt4 key购买 nike

我正在阅读教科书,偶然发现了这段代码:

 public abstract class AbstractMap<K,V> implements Map<K,V> {
public boolean isEmpty() { return size() == 0; }
//---------------- nested MapEntry class ---------------
protected static class MapEntry<K,V> implements Entry<K,V> {
private K k; // key
private V v; // value
public MapEntry(K key, V value) {
k = key;
v = value;
}
// public methods of the Entry interface
public K getKey() { return k; }
public V getValue() { return v; }
// utilities not exposed as part of the Entry interface
protected void setKey(K key) { k = key; }
protected V setValue(V value) {
V old = v;
v = value;
return old;
}
}
//----------- end of nested MapEntry class ----------

我已经尝试解决这个问题有一段时间了。我似乎无法意识到为什么嵌套类如此重要。是否可以省略该嵌套类并将所有这些方法放入 AbstractMap 类中?是否出于安全目的(如链表和节点?)

请随时告诉我这是否不是发布此问题的正确位置,因为代码不是我的,而是我教科书中的代码。

最佳答案

实现 Map 时需要实现的方法之一是

public Set<Map.Entry<K,V>> entrySet();

因为它的返回类型为 Set<Map.Entry<K,V>>您需要提供 Entry<K,V> 的实现为您Map 。通常的做法是实现 Entry作为 Map 的内部类这是一个 Entry对于。

鉴于Entry可以独立于Map使用在它的基础上,您需要在 Entry 上拥有这些方法类。

关于java - 为什么在 HashTable ADT 的实现中有一个嵌套类(来自教科书的代码)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33923385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com