Сортировка объекта Arraylist

у меня есть массив

Arraylist<Class> arraylist = new Arraylist<>();

Класс содержит различные элементы, такие как имя, возраст, номер списка.

я хочу отсортировать этот массив и использовать

Collections.sort(arraylist);

и получаю сообщение об ошибке, как я могу отсортировать этот массив с номером рулона. в студии андроид.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
247
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вам нужен 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;
    }
}

Другие вопросы по теме