我有Arraylist
Arraylist<Class> arraylist = new Arraylist<>();
类包含不同的元素,例如名称,年龄,卷编号。
我想对该数组列表进行排序并使用
Collections.sort(arraylist);
并得到一个错误,我该如何用滚动号对该数组列表进行排序。在android studio中。
答案 0 :(得分:1)
在排序操作期间,您需要Comparator<Class>
来比较元素。一个例子可能是:
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);
}
}
然后将比较器用作
Collections.sort(arraylist, new ClassComparator());
做同一件事的另一种方法是在Comparable
类中实现Class
接口:
class Class implements Comparable<Class> {
public String name;
@Override
public int compareTo(Class o) {
return name.compareTo(o.name);
}
}
然后致电:
Collections.sort(arraylist);
答案 1 :(得分:0)
您的课程,例如在排序之前应该可以排序。对于Collections.sort()来说,必须知道应该按照什么标准对列表进行排序。除非您要明确实现Comparable或创建Compratator(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));
答案 2 :(得分:0)
您可以使用lambda函数(Java 8),该函数不需要您实现Comparable类并且可以正确完成工作。
常规语法:
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<>();
这是给班上的人
class Student{
String name;
int rollNumber;
public String getName(){
return name;
}
public int getRollNumber(){
return rollNumber;
}
}