2015-05-10 2 views
2

Мне нужно «Контейнер» для нескольких объектов. Определение:Java - объект TreeMap как ключ или значение?

class DataSet implements Comparable { 
    public int id; 
    public String Date; 
    public double Value 

    public DataSetFSA (int id, String Date) { 
     this.id=id; 
     this.Date=Date; 
    } 
    @Override 
    public int compareTo(Object o) { 
    return 1; 
    } 
} 

Объекты имеют определенный порядок, который не должен быть уничтожен! Как вы видите, мой контейнерный класс уже имеет «id»!

Так что теперь мой вопрос: я должен вставить объект в качестве ключа или значения в TreeMap?

DataSet ds1 = new DataSetFSA(1,"Val1"); 
DataSet ds2 = new DataSetFSA(2,"Val2"); 
... 

TreeMap DataTreeMap = new TreeMap(); 
     DataTreeMap.put(1,ds1); //as value 
     DataTreeMap.put(2,ds2); 

//or as key (then the class has to implement comparable) 
     DataTreeMap.put(ds1,1); //as key but then the value doesnt has a function anymore 
     DataTreeMap.put(ds2,2); 
+0

Почему вы используете 'TreeMap' вообще? Что вы собираетесь с этим делать? –

+0

Почему ваш метод compareTo всегда возвращает 1? Вы хотите сохранить порядок вставки? – CKing

+0

Ну, я не понимаю, о чем вы говорите: «как ключ, но тогда значение больше не имеет функции». Кроме того, ваша реализация метода 'compareTo' 'бит' недействительна;) –

ответ

0

Если вы просто ищете отсортированный (уникальный) контейнер, нет никаких причин, чтобы использовать TreeMap - это TreeSet, казалось бы, чтобы соответствовать требованиям идеально.

-1

Положите его в качестве значения и изменения сопоставимых и CompareTo следующего

class DataSet implements Comparable<DataSet> { 
public int id; 
public String Date; 
public double Value 

public DataSetFSA (int id, String Date) { 
    this.id=id; 
    this.Date=Date; 
} 
@Override 
public int compareTo(DataSet o) { 
return this.id-o.id; 
} 

}

+1

Метод compareTo может привести к переполнению целых чисел. http://stackoverflow.com/questions/2728793/java-integer-compareto-why-use-comparison-vs-subtraction – CKing

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