我在对 Arraylist 中的对象进行排序时遇到问题,因为我是排序对象的新手。
对数组列表进行排序是非常基本的,但是对对象数组列表进行排序是完全不同的事情。基本上我一直在检查堆栈溢出中的代码,人们似乎使用比较器来解决他们的问题,但他们没有解释如何实际调用该方法并将其投入使用,这就是我来这里的原因。
使用下面的代码,我尝试使用参数对学生数组列表进行排序 - 字符串名称、整数年龄和字符串类(class)。然后我有另一个类来存储学生对象并在类中对它们进行排序。这是我所拥有的:
Student.java
public class Student {
private String name, course;
private int age;
public Student(String name, int age, String course) {
this.name = name;
this.age = age;
this.course = course;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getCourse() {
return course;
}
}
CompareObj.java
import java.util.*;
public class CompareObj implements Comparator<Student>{
private ArrayList<Student> sList;
public CompareObj() {
sList = new ArrayList<Student>();
}
@Override
public int compare(Student s1, Student s2) {
return s2.getName().compareTo(s1.getName());
}
public void add(Student s1) {
sList.add(s1);
}
public void displayList() {
for(int i = 0; i<sList.size();i++) {
System.out.println(sList.get(i).getName());
}
}
}
在 CompareObj 类中,如何使用已实现的方法 compare(s1,s2),如何使用此方法对学生对象的数组列表进行排序?
最佳答案
how can i use this method to sort my arraylist of student objects?
您不需要自己调用compare()
。您可以将比较器传递给 Collections.sort()
,它会通过调用 compare()
方法为您进行排序。
通过使用自定义类 CompareObj
,
Collections.sort(studentList, new CompareObj());
或者没有 CompareObj
的另一种方式是,
Collections.sort(studentList,new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
return s1.getName().compareToIgnoreCase(s2.getName());
}
});
关于java - 如何使用 Object 参数对 Arraylist 中的对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25311557/