泛型如何成为<map.entry <keytype,valuetype>&gt;

时间:2017-03-23 22:07:30

标签: java

我收到了一个问题:

通过存储类型的数据成员来编写TreeMap类的实现 TreeSet <Map.Entry<KeyType,ValueType>>

我很难,我应该像Treeset +实现Map接口一样创建一个树形图类,它们是什么意思&#34;存储类型TreeSet<<Map.Entry<KeyType,ValueType>>&#34; <的数据成员/ p>

如何将通用设为<Map.Entry<KeyType,ValueType>>

1 个答案:

答案 0 :(得分:3)

  

通过存储TreeMap类型的数据成员来编写TreeSet <Map.Entry<KeyType,ValueType>>类的实现

通过&#34;编写TreeMap类&#34; 的实现,我将其解释为实现您自己的类的意义,其行为类似于内置的TreeMap类,即NavigableMap接口的实现。

通过&#34; 存储类型为X的数据成员&#34;,我将其解释为具有类型X字段的类的含义。

所以,你需要实现这个类:

public class MyTreeMap<KeyType, ValueType> implements NavigableMap<KeyType, ValueType> {
    private TreeSet<Map.Entry<KeyType, ValueType>> data;

    // your code here
}

为方便起见,以下是一些(简单)方法:

public Set<Map.Entry<KeyType, ValueType>> entrySet() {
    return this.data;
}
public void clear() {
    this.data.clear();
}
public int size() {
    return this.data.size();
}

<强>更新

我的解释是TreeSet使用Comparator比较Entry按键,以便您可以执行以下操作(伪代码):

public ValueType get(Object key) {
    Entry<...> dummy = new DummyEntry<...>(key);
    Entry<...> found = this.data.ceiling(dummy);
    if (found != null && comparator.compare(found, dummy) == 0)
        return found.getValue();
    return null;
}