具有泛型类型的Map.Entry的树集实现

时间:2015-10-24 16:00:36

标签: java hashmap treeset

我正在构建一个频率表实现,其中hashmap表元素是链式树集。键/值对类具有类定义,如下所示:

public class CountablePair<F, S extends Comparable<? super S>> implements Comparable<S> {

我希望创建一个实现Map.Entry的新类EntryTreeSet,并在其中包含CountablePairs的树集。我当前的类声明代码,它的treeset变量及其构造函数如下:

public class EntryTreeSet<F,S> implements Map.Entry<F,S> {

private TreeSet<CountablePair<F,S>> tree;

public EntryTreeSet() {
    this.tree = new TreeSet<CountablePair<F,S>>();
}

但是,这会产生以下错误陈述:

  

EntryTreeSet.java:19:错误:类型参数S#1不在类型变量S#2的范围内       private TreeSet&gt;树;                                       ^     其中S#1,S#2是类型变量:       S#1扩展了在EntryTreeSet类中声明的Object       S#2扩展了CountablePair类中声明的Comparable   EntryTreeSet.java:22:error:类型参数S#1不在类型变量S#2的范围内           this.tree = new TreeSet&gt;();                                                   ^     其中S#1,S#2是类型变量:       S#1扩展了在EntryTreeSet类中声明的Object       S#2扩展了CountablePair类中声明的Comparable

我想知道如何正确地使我的treeset保持CountablePair类的实例。

2 个答案:

答案 0 :(得分:0)

似乎代码中唯一的问题是S声明中EntryTreeSet参数的边界缺失。这样的类声明正确编译:

public class EntryTreeSet<F, S extends Comparable<? super S>> 
                         implements Map.Entry<F, S> {

答案 1 :(得分:0)

S是原始类型,这就是编译错误即将发生的原因。 请尝试以下代码。

public class EntryTreeSet<F,S extends Comparable<? super S>> implements Map.Entry<F,S>