Стабильная сортировка java по алфавиту с массивами
Я пытался запустить сортировку в первый раз. Я создал массив, который имеет студенческие объекты. Теперь я хочу отсортировать эти объекты в этом массиве в соответствии с их именем в алфавитном порядке. Что я не понимаю, так это Arrays.sort (студент, новые студенты ()); и какие должны быть его аргументы, если таковые имеются. Большое спасибо!
import java.util.Comparator;
import java.util.Arrays;
public class Students implements Comparable<Students> {
private String FirstName;
private String lastName;
private int age;
public Students(String firstName, String lastName, int age) {
super();
FirstName = firstName;
this.lastName = lastName;
this.age = age;
}
public String getFirstName() {
return FirstName;
}
public void setFirstName(String firstName) {
FirstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int compareTo(Students toCheck) {
int compareQuantity = ((Students)toCheck).getAge();
return this.age-compareQuantity;
}
public static void main(String args[]){
//array for the 6 students
Students[] student= new Students[6] ;
//creating and adding one by one
Students sam = new Students("Sam","Wo", 22 );
student[0]=sam;
Students ben = new Students("Ben","Wang", 27 );
student[1]=ben;
Students arsalan = new Students("Arsalan","Khan", 28);
student[2]=arsalan;
Students issa = new Students("Issa","Hashim", 25 );
student[3]=issa;
//ben khan will test if the last name is different. Should be fun .
Students benK = new Students("Ben","Khan", 29 );
student[4]=benK;
Students jackM = new Students("Jack","Meth", 23);
student[5]=jackM;
Comparator <Students> studentCompare = new Comparator<Students>(){
public int compare (Students s1 , Students s2){
String studentName1 = s1.getFirstName();
String studentName2 = s2.getFirstName();
return studentName1.compareTo(studentName2);
Arrays.sort(student,new Students());
}
}; для (int i =0; i
3 ответа
Решение
Вам не нужен Comparator внутри вашей функции main(), поэтому вы должны изменить функцию main(), как показано ниже:
public static void main(String args[]) {
//array for the 6 students
Students[] student = new Students[6];
//creating and adding one by one
Students sam = new Students("Sam", "Wo", 22);
student[0] = sam;
Students ben = new Students("Ben", "Wang", 27);
student[1] = ben;
Students arsalan = new Students("Arsalan", "Khan", 28);
student[2] = arsalan;
Students issa = new Students("Issa", "Hashim", 25);
student[3] = issa;
//ben khan will test if the last name is different. Should be fun .
Students benK = new Students("Ben", "Khan", 29);
student[4] = benK;
Students jackM = new Students("Jack", "Meth", 23);
student[5] = jackM;
Arrays.sort(student);
}
Вам не нужно реализовывать Comparable интерфейс. Попробуй это.
Arrays.sort(student, new Comparator<Students>() {
@Override
public int compare(Students o1, Students o2) {
// TODO Auto-generated method stub
return o1.FirstName.compareTo(o2.FirstName);
}
});
Вывод отсортирован по алфавиту:
28 Arsalan
27 Ben
29 Ben
25 Issa
23 Jack
22 Sam
Начиная с Java 8, Comparators стали намного красивее...
// NOTE: I would rename your student array variable to be students
// and your class declaration to be Student.
Arrays.sort(student, Comparator.comparing(Students::getFirstName));