2013-05-26 72 views
0

我是Java新手,遇到問題。我需要一個班來存儲兩個值,一個叫做key,另一個叫value。該類可以存儲對象,返回value並允許通過比較鍵值來比較兩個對象。擴展通用類中的類比

public class Entry <K,V> implements Comparable<Entry<K,V>> 
{ 
    private K key; 
    private V value; 

    public Entry(K key,V value) 
    { 
     this.key=key; 
     this.value=value; 
    } 

    public void setValue(V value) 
    { 
     this.value=value; 
    } 

    public String toString() 
    { 
     return "key= "+key+" value=" +value; 
    } 
} 

他現在要求我添加Comparable方法。我被允許使用equalsTo(Object)。我如何執行Comparable?我試圖

public Comparable(k key) 
{ 
    if (this.k < k) 
     return -1; 

    if (this.k > k) 
     return 1; 

    else return 0; 
} 

,但我得到一個錯誤,說我不能使用><

+1

你的方法應該叫做compareTo。你應該將比較委託給K類,可能是通過使其可比較本身 – njzk2

回答

6

對於仿製藥和Comparableinterface,其他答案似乎很困惑。

下面是一些代碼,將編譯:

public class Entry<K extends Comparable<K>, V> implements Comparable<Entry<K, V>> { 

    private final K key; 
    private V value; 

    public Entry(K key, V value) { 
     this.key = key; 
     this.value = value; 
    } 

    @Override 
    public int compareTo(Entry<K, V> other) { 
     return key.compareTo(other.key); 
    } 
} 

所以你強迫你的鑰匙也擴展到Comparable本身的類型;然後使用其compareTo方法根據密鑰將您的Entry與其他Entry進行比較。

+0

這一種工作,但當我嘗試比較某事我實際上有一個例外..我tryed(INT我= 0;我

+0

這個'entryArr [i] .compareTo(「L」)'看起來像你試圖比較'Entry '到一個'String'?這是行不通的 - 你需要做'entryArr [i] .getKey()。compareTo(「L」)'。 –