2012-02-25 2 views
0

Я попытался найти учебники и видеоролики, и я понимаю, что делает реализация, хотя я немного смущен относительно того, как реализовать класс из библиотеки Java. В моей домашней работе я предполагаю использовать класс DataSet и сделать так, чтобы он принимал объекты Comparable. Программа должна записывать значения Min и Max в зависимости от объектов, в этом случае я предполагаю использовать строки. Я не был уверен, нужны ли мне какие-либо классы для реализации интерфейса Comparable, поэтому я сделал два класса на всякий случай, если я предполагал сделать это. Мой реальный вопрос в том, как я на самом деле задействовать переменную String в классе тестера для фактического чтения и сравнения объекта с другим? заранее спасибо.реализация и интерфейсы

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); 
} 

} 

Я не был уверен, какой из этих двух классов будет вполне подходящим вариантом для реализации Хотя я думаю, что класс Строки ниже не будет работать на всех б/с Это уже стандартным классом, так что я не был слишком уверен, используя его

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 является универсальным типом и в вашем случае это должно быть String, Вот как создать новый набор данных: DataSet<String> ds = new DataSet<String>;

+0

Это помогло но знаете ли вы, как бы добавить объект Comparable в этот класс и получить строку в конце программы? – James

+0

Если вы создаете новый DataSet , все методы, возвращающие тип T, вернут строку. Таким образом, метод add примет параметр String as, и getMaximum() вернет строку. – nist

Смежные вопросы