2012-02-25 98 views
0

我試過查找教程和視頻,我理解實現是什麼,雖然我有點困惑如何從Java庫實現一個類。在我的作業中,我假設要利用類DataSet並使其接受Comparable對象。該程序假設根據對象記錄Min和Max值,在這種情況下,我假設使用字符串。我不確定是否需要任何類來實現Comparable接口,所以我創建了兩個類,以防萬一我想這樣做。我真正的問題是,我如何在測試程序類中實際添加一個字符串變量來實際讀取和比較對象?提前致謝。實現和接口

public class Word implements Comparable 
{ 
private String str; 

public Word() 
{ 
    str = null; 
} 

public Word(String s) 
{ 
    str = s; 
} 

public int compareTo(Object other) 
{ 
    String n = (String) other; 
    return str.compareTo(n); 
} 

} 

我不知道,但我認爲String類的下方,所以我不是太肯定不會在所有的工作B/C這已經是一個標準的類這兩類是適合實施使用它

public class String implements Comparable 
{ 
    public String s; 

    public String() 
    { 
    s = null; 
    } 

public String(String str) 
{ 
    s = str; 
} 
public int compareTo(Object other) 
{ 
    String n = (String) other; 
    return s.compareTo(n); 
} 
} 


public interface Comparable 
{ 
public int compareTo(Object other); 
} 


public class DataSet 
{ 
private Object maximum; 
private Object least; 
private Comparable compare; 
private int count; 

public DataSet(Comparable s) 
{ 
    compare = s; 
} 

public void add(Object x) 
{ 

    if(count == 0) 
    least = x; 
    if(count == 0 || compare.compareTo(x) >=0) 
    maximum = x; 
    else if(compare.compareTo(x) <0) 
    least = x; 
    count++; 

} 
public Object getMaximum() 
{ 
    return maximum; 
} 

public Object getLeast() 
{ 
    return least; 
} 

} 


public class DataSetTester 
{ 
    public static void main(String[] args) 
    { 
    Comparable n = new Word("sand"); 
    DataSet data = new DataSet(n); 


    data.add(new Word(man)); 



    System.out.println("Maximum Word: " + data.getMaximum()); 
    System.out.println("Least Word: " + data.getLeast()); 
} 
} 

回答

0

接口是一個契約,它表明你的類包含在接口中實現的所有方法。在這種情況下,CompareTo(object other)。 String類已經實現了可比的接口,所以你不需要你自己的類。我想你的數據集類應該是這個樣子:

public class DataSet<T implements Comparable> 
{ 
private T maximum; 
private T least; 
private T count; 


public void add(T x) 
{ 

    if(count == 0){ 
    least = x; 
    maximum = x; 
    } 
    else if(least.compareTo(x) > 0) 
    least = x; 
    else if(maximum.compareTo(x) < 0) 
    maximum = x; 
    count++; 
} 

public T getMaximum() 
{ 
    return maximum; 
} 

public T getLeast() 
{ 
    return least; 
} 

} 

T是一個泛型類型,你的情況應該是字符串,這裏是你如何創建新的數據集: DataSet<String> ds = new DataSet<String>;

+0

這有助於但是你有沒有想過如何將Comparable對象添加到這個類中並在程序結束時接收一個字符串? – James 2012-02-25 17:03:12

+0

如果您創建新的DataSet 所有返回類型T的方法都將返回一個字符串。所以add方法將以String爲參數,getMaximum()將返回一個String。 – nist 2012-02-25 17:07:18