у меня есть массив
Arraylist<Class> arraylist = new Arraylist<>();
Класс содержит различные элементы, такие как имя, возраст, номер списка.
я хочу отсортировать этот массив и использовать
Collections.sort(arraylist);
и получаю сообщение об ошибке, как я могу отсортировать этот массив с номером рулона. в студии андроид.




Вам нужен 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);
Ваш класс, например. должен быть сортируемым, прежде чем сортировать его. Для 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));
Вы можете использовать лямбда-функции (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;
}
}