Как реализовать пользовательский компаратор для сортировки списка сотрудников в Java?JAVA

Программисты JAVA общаются здесь
Anonymous
Как реализовать пользовательский компаратор для сортировки списка сотрудников в Java?

Сообщение Anonymous »

У меня есть список содержащий объекты сотрудника, где каждый объект имеет следующие атрибуты:
id (целое число): уникальный идентификатор работника, имя (строка): имя работника и зарплата (двойной): зарплата работника. Сначала (в порядке убывания). < /p>
на основе имени: если зарплаты равны, сортируйте по имени в восходящем алфавитном порядке (естественная сортировка). < /p>
basd на идентификаторе: если оба зарплаты и имя равны, сортируйте по идентификатору.

Код: Выделить всё

import java.util.*;

class Employee {
private int id;
private String name;
private double salary;

public Employee(int id, String name, double salary) {
this.id = id;
this.name = name;
this.salary = salary;
}

public int getId() { return id; }
public String getName() { return name; }
public double getSalary() { return salary; }

@Override
public String toString() {
return "Employee{id=" + id + ", name='" + name + "', salary=" + salary + "}";
}
}

public class EmployeeSorter {
public static void main(String[] args) {
List employees = new ArrayList();
employees.add(new Employee(101, "John", 50000));
employees.add(new Employee(102, "Alice", 60000));
employees.add(new Employee(103, "Bob", 50000));
employees.add(new Employee(104, "Alice", 60000));
employees.add(new Employee(105, "David", 40000));

// Attempt to sort the list of employees
Collections.sort(employees, Comparator.comparing(Employee::getSalary).reversed());

System.out.println("Sorted Employee List:");
for (Employee emp : employees) {
System.out.println(emp);
}
}
}
Я изначально пытался использовать collections.sort (list) , но он работает только для сортировки с одним атрибутом. Я также экспериментировал с использованием Comparator.comParing (employee :: getSalary) .Rerversed (), но я изо всех сил пытался эффективно цепной компараторы, чтобы эффективно достичь многоуровневой сортировки. Он не обрабатывает многоуровневую сортировку по мере необходимости (зарплата -> name -> id).
Я ищу эффективный и чистый способ реализации многоуровневой сортировки с использованием коллекций Java. И решение должно следовать передовым методам реализации пользовательских компараторов.

Подробнее здесь: https://stackoverflow.com/questions/795 ... es-in-java

Вернуться в «JAVA»