[英]Treeset Implementation of Map.Entry with Generic Types
我正在構建一個頻率表實現,其中哈希表表元素是鏈接的樹集。 鍵/值對類提供了如下類定義:
public class CountablePair<F, S extends Comparable<? super S>> implements Comparable<S> {
我希望創建一個新類EntryTreeSet,該類實現Map.Entry,並在其中包括CountablePairs樹集。 我當前用於類聲明,其樹集變量及其構造函數的代碼如下:
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私有TreeSet>樹的范圍內; ^其中S#1,S#2是類型變量:S#1擴展了在類EntryTreeSet中聲明的對象S#2擴展了在類CountablePair EntryTreeSet.java中聲明的Comparable:錯誤:類型參數S#1不在以下范圍內類型變量S#2 this.tree = new TreeSet>(); ^其中S#1,S#2是類型變量:S#1擴展在類EntryTreeSet中聲明的對象S#2擴展在類CountablePair中聲明的Comparable
我想知道如何使樹集容納CountablePair類的實例。
似乎您的代碼中唯一的問題是EntryTreeSet
聲明中S
參數的邊界不EntryTreeSet
。 這樣的類聲明可以正確編譯:
public class EntryTreeSet<F, S extends Comparable<? super S>>
implements Map.Entry<F, S> {
S是原始類型,這就是為什么會出現編譯錯誤。 試試下面的代碼。
public class EntryTreeSet<F,S extends Comparable<? super S>> implements Map.Entry<F,S>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.