私はほとんどすべてを試しましたが、リストを自分で並べ替えることができないようです。ここにいくつかのコードがあります:
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@a62fc3 が表示されます。ここに私の toString が人のクラス内にあります:
public String toString()
{
char tab = '\t';
return ("ID Number: "+id+tab+" Name: "+tab+name+tab+" Birthdate: "+(birthdate.toString()));
}
person クラス内で toString メソッドを呼び出すことができないことを付け加えておきます。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 Person1@e09 Person@de6f34 Person@156ee8e Person@47b480
ありがとう