Javaのオブジェクトのソートについて
ネットを通してJavaのオブジェクトのソートについて勉強中です。
下記のコードは性別、年齢、名前の順に昇順に並び替えているのですが性別におけるソートの理屈がよく分かりません。なぜ性別「m」の要素が先頭に入るリストになるのか。compareToメソッドで1が返ってくる場合は、昇順になるという意味があったりするのでしょうか。
public class SmartEnergy {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
students.add(new Student("いのうえなおみ", 24, 'f', 158));
students.add(new Student("たかはしたつや", 23, 'm', 176));
students.add(new Student("いのうえなおみ", 27, 'm', 164));
students.add(new Student("えのもとめぐみ", 24, 'f', 162));
students.add(new Student("えのもとたすく", 24, 'm', 178));
students.add(new Student("さくらぎたかはる", 26, 'f', 163));
//性別、年齢、名前の順に昇順に並び替える
Collections.sort(students, new Comparator<Student>() {
public int compare(Student student1, Student student2) {
int temp = 0;
if (student1.getSex() == 'm' && student2.getSex() == 'f')
temp = -1;
if (student1.getSex() == 'f' && student2.getSex() == 'm')
temp = 1;
if (temp == 0) {
temp = student1.getAge() - student2.getAge();
if (temp == 0)
temp = student1.getName().compareTo(student2.getName());
}
return temp;
}
});
for (Student student : students) {
System.out.println(student.getName() + "," + student.getAge() + ","
+ student.getSex() + "," + student.getHeight());
}
}
}