Java 对Arraylist对象排序
我有ArraylistJava 对Arraylist对象排序,java,android,sorting,arraylist,Java,Android,Sorting,Arraylist,我有Arraylist Arraylist<Class> arraylist = new Arraylist<>(); 还有一个错误,我如何在android studio中使用卷号对该arraylist进行排序。在排序操作期间,您需要一个比较器来比较元素。一个例子是: class ClassComparator implements Comparator<Class> { @Override public int compare(Class
Arraylist<Class> arraylist = new Arraylist<>();
还有一个错误,我如何在android studio中使用卷号对该arraylist进行排序。在排序操作期间,您需要一个
比较器来比较元素。一个例子是:
class ClassComparator implements Comparator<Class> {
@Override
public int compare(Class c1, Class c2) {
// write comparison logic here like below , it's just a sample
return c1.name.compareTo(c2.name);
}
}
执行相同操作的另一种方法是在Class
Class中实现Comparable
接口:
class Class implements Comparable<Class> {
public String name;
@Override
public int compareTo(Class o) {
return name.compareTo(o.name);
}
}
例如,您的类在排序之前应该是可排序的。Collections.sort()必须知道它应该根据什么标准对列表进行排序。除非您想要显式地实现Comparable或创建Comprator(java 8之前的老方法),否则您可以执行以下操作
class Student {
private int rollNumber;
private String name;
public int getRollNumber() {
return rollNumber;
}
public void setRollNumber(int rollNumber) {
this.rollNumber = rollNumber;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
然后,您可以将列表排序为:
Collections.sort(list, Comparator.comparingInt(Student::getRollNumber));
您可以使用lambda函数(java8),它不需要您实现类似的类,而且工作做得很好
一般语法:
Collections.sort(students, (s1, s2) ->
s1.getName().compareTo(s2.getName())); // for String values
Collections.sort(students, (s1, s2) ->
Integer.compare(s1.getRollNumber(), s2.getRollNumber())); // for Integral values
ArrayList将是:
List<Student> students = new ArrayList<>();
Collections.sort(list, Comparator.comparingInt(Student::getRollNumber));
Collections.sort(students, (s1, s2) ->
s1.getName().compareTo(s2.getName())); // for String values
Collections.sort(students, (s1, s2) ->
Integer.compare(s1.getRollNumber(), s2.getRollNumber())); // for Integral values
List<Student> students = new ArrayList<>();
class Student{
String name;
int rollNumber;
public String getName(){
return name;
}
public int getRollNumber(){
return rollNumber;
}
}