【发布时间】:2015-10-25 01:07:12
【问题描述】:
我正在构建一个频率表实现,其中哈希表表元素是链式树集。键/值对类的类定义如下:
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 的范围内 私有树集>树; ^ 其中 S#1,S#2 是类型变量: S#1 扩展了在类 EntryTreeSet 中声明的对象 S#2 扩展了在类 CountablePair 中声明的 Comparable EntryTreeSet.java:22:错误:类型参数 S#1 不在类型变量 S#2 的范围内 this.tree = 新树集>(); ^ 其中 S#1,S#2 是类型变量: S#1 扩展了在类 EntryTreeSet 中声明的对象 S#2 扩展了在类 CountablePair 中声明的 Comparable
我想知道如何正确地让我的树集保存 CountablePair 类的实例。
【问题讨论】:
-
一件事立即脱颖而出:您使用的是原始类型:
TreeSet<CountablePair>将CountablePair视为原始类型。您应该在声明中指定其参数。 -
感谢您的反馈!我已经用指定的参数更新了我的问题。
-
吹毛求疵,但应该是
TreeSetEntry;EntryTreeSet这个名字让人相信它是一个条目树集。 -
另外,你确定你的 TreeSet 的每个条目都有自己独立的 TreeSet 吗?
-
我会尝试
class EntryTreeSet<F,S extends Comparable<? super S>> implements Map.Entry<F,S>作为第二类的声明。