Я перепробовал почти все, и я не могу заставить свои списки упорядочить себя.Вот некоторый код:
private List<Person> names = new ArrayList<Person>();
private Map<Integer, Person> peopleMap = new TreeMap <Integer, Person>();
for(int i = 0; i<20; i++)
{
Person personOne = new Person();
peopleMap.put(personOne.id,personOne);
names.add(personOne);
}
Collections.sort(names);
run();
}
My Person class:
public class Person implements Comparable {
public String name;
public int id;
public Date birthdate;
static int idRecord = 0;
Значения заполнены случайными числами.Моя дата имеет формат даты.
У меня также есть метод toString внутри моего класса person, но по какой-то причине, когда я пытаюсь распечатать свои карты, он дает мне хэш-код (это правильно хэш-код?) Person @a62fc3.Вот моя строка toString внутри человека clasS:
public String toString()
{
char tab = '\t';
return ("ID Number: "+id+tab+" Name: "+tab+name+tab+" Birthdate: "+(birthdate.toString()));
}
Я должен добавить, что я не могу вызвать свой метод toString внутри моего класса person.Потому что это печать Person @ a62fc3.
public void sortByID()
{
char tab = '\t';
for (int i = 1; i<20; i++)
System.out.println((peopleMap.get(i)).toString());
//System.out.println("ID Number: "+(peopleMap.get(i).id)+tab+" Name: "+tab+peopleMap.get(i).name+tab+" Birthdate: "+peopleMap.get(i).birthdate);
run();
}
Код с комментариями будет работать, но код, вызывающий toString, не печатает то, что должен
Сравните с методом внутри моего класса Person:
public int compareTo(Object obj) {
Person o = (Person) obj;
if (this.id == o.id) { return 0; }
if (this.id > o.id) { return 1; }
if (this.id < o.id) { return -1; }
return 0;
Я могу предоставить больше кода, если это необходимо.
Сравните по имени метода и его вывод.Должен ли я создать arrayList для хранения своих значений и затем отсортировать их в этом виде?
public void sortByName()
{
// char tab = '\t';
for(int j = 1; j<20; j++)
{
// System.out.println("ID Number: "+(names.get(j).id)+tab+" Name: "+tab+peopleMap.get(j).name+tab+" Birthdate: "+peopleMap.get(i).birthdate);
//Person p = names.get(j);
System.out.println(names.get(j).toString());
}
}
Вывод: Person @ 10b30a7 Person @ 1a758cb Person @ 1b67f74 Person @ 69b332 Person @ 173a10f Person @ 530daa Person @ a62fc3 Person@ 89ae9e Person @ 1270b73 Person @ 60aeb0 Person @ 16caf43 Person @ 66848c Person @ 8813f2 Person @ 1d58aae Person @ 83cc67 Person @ e09713 Person @ de6f34 Person @ 156ee8e Person @ 47b480
Спасибо