Упорядкування Елементів за Допомогою Методу sorted()
У Stream API Java метод sorted() дозволяє ефективно впорядковувати елементи потоку. Сортування є важливою операцією, оскільки спрощує обробку даних і полегшує розміщення елементів у потрібному порядку.
Сортування у природному порядку
Метод sorted() є перевантаженим і має дві версії. Розглянемо першу з них:
Stream<T> sorted();
Ця версія сортує елементи на основі їхньої природної впорядкованості. Для використання цього методу елементи повинні реалізовувати інтерфейс Comparable, що дозволяє їм автоматично порівнюватися та впорядковуватися.
Практичний приклад
Уявіть собі фабрику з різними деталями, кожна з яких має унікальну вагу. Мета — відсортувати ці деталі у зростаючому порядку за їхньою вагою, використовуючи інтерфейс Comparable.
Main.java
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { // List of factory parts List<Part> parts = Arrays.asList( new Part("Wheel", 10), new Part("Engine", 250), new Part("Brake", 15), new Part("Chassis", 80) ); // Sorting parts by weight in ascending order parts.stream() .sorted() // Sorting by natural order .forEach(System.out::println); } } class Part implements Comparable<Part> { private String partName; private int weight; public Part(String partName, int weight) { this.partName = partName; this.weight = weight; } public String getPartName() { return partName; } public int getWeight() { return weight; } @Override public int compareTo(Part other) { return Integer.compare(this.weight, other.weight); // Sorting by weight } @Override public String toString() { return partName + ": " + weight + "kg"; } }
Тут клас Part реалізує інтерфейс Comparable<Part>. Метод compareTo() виконує сортування деталей за weight, використовуючи Integer.compare(this.weight, other.weight).
У головному класі метод sorted() сортує потік деталей у зростаючому порядку за їхньою weight.
Сортування з Comparator
Друга версія методу sorted() дозволяє сортувати з використанням власного Comparator. Цей метод приймає Comparator як параметр, визначаючи, як елементи мають бути порівняні та відсортовані.
Stream<T> sorted(Comparator<? super T> comparator);
За допомогою цього підходу можна вказати власний порядок сортування, що надає більше контролю над тим, як елементи будуть розташовані.
Практичний приклад
Припустимо, потрібно відсортувати список працівників заводу за зарплатою у спадному порядку. Для цього використовується метод sorted() разом із компаратором.
Main.java
123456789101112131415161718192021222324252627282930313233343536373839404142434445package com.example; import java.util.Arrays; import java.util.Comparator; import java.util.List; public class Main { public static void main(String[] args) { // List of factory employees List<Employee> employees = Arrays.asList( new Employee("John", 50000), new Employee("Emily", 75000), new Employee("Michael", 45000), new Employee("Sophia", 60000) ); // Sorting employees by salary in descending order employees.stream() .sorted(Comparator.comparingInt(Employee::getSalary).reversed()) // Sorting in descending order .forEach(System.out::println); } } class Employee { private String name; private int salary; public Employee(String name, int salary) { this.name = name; this.salary = salary; } public String getName() { return name; } public int getSalary() { return salary; } @Override public String toString() { return name + ": " + salary; } }
Тут використовується компаратор Comparator.comparingInt(Employee::getSalary).reversed(), який спочатку сортує співробітників за зарплатою у зростаючому порядку, а потім застосовує reversed(), щоб змінити порядок на спадний.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 2.33
Упорядкування Елементів за Допомогою Методу sorted()
Свайпніть щоб показати меню
У Stream API Java метод sorted() дозволяє ефективно впорядковувати елементи потоку. Сортування є важливою операцією, оскільки спрощує обробку даних і полегшує розміщення елементів у потрібному порядку.
Сортування у природному порядку
Метод sorted() є перевантаженим і має дві версії. Розглянемо першу з них:
Stream<T> sorted();
Ця версія сортує елементи на основі їхньої природної впорядкованості. Для використання цього методу елементи повинні реалізовувати інтерфейс Comparable, що дозволяє їм автоматично порівнюватися та впорядковуватися.
Практичний приклад
Уявіть собі фабрику з різними деталями, кожна з яких має унікальну вагу. Мета — відсортувати ці деталі у зростаючому порядку за їхньою вагою, використовуючи інтерфейс Comparable.
Main.java
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { // List of factory parts List<Part> parts = Arrays.asList( new Part("Wheel", 10), new Part("Engine", 250), new Part("Brake", 15), new Part("Chassis", 80) ); // Sorting parts by weight in ascending order parts.stream() .sorted() // Sorting by natural order .forEach(System.out::println); } } class Part implements Comparable<Part> { private String partName; private int weight; public Part(String partName, int weight) { this.partName = partName; this.weight = weight; } public String getPartName() { return partName; } public int getWeight() { return weight; } @Override public int compareTo(Part other) { return Integer.compare(this.weight, other.weight); // Sorting by weight } @Override public String toString() { return partName + ": " + weight + "kg"; } }
Тут клас Part реалізує інтерфейс Comparable<Part>. Метод compareTo() виконує сортування деталей за weight, використовуючи Integer.compare(this.weight, other.weight).
У головному класі метод sorted() сортує потік деталей у зростаючому порядку за їхньою weight.
Сортування з Comparator
Друга версія методу sorted() дозволяє сортувати з використанням власного Comparator. Цей метод приймає Comparator як параметр, визначаючи, як елементи мають бути порівняні та відсортовані.
Stream<T> sorted(Comparator<? super T> comparator);
За допомогою цього підходу можна вказати власний порядок сортування, що надає більше контролю над тим, як елементи будуть розташовані.
Практичний приклад
Припустимо, потрібно відсортувати список працівників заводу за зарплатою у спадному порядку. Для цього використовується метод sorted() разом із компаратором.
Main.java
123456789101112131415161718192021222324252627282930313233343536373839404142434445package com.example; import java.util.Arrays; import java.util.Comparator; import java.util.List; public class Main { public static void main(String[] args) { // List of factory employees List<Employee> employees = Arrays.asList( new Employee("John", 50000), new Employee("Emily", 75000), new Employee("Michael", 45000), new Employee("Sophia", 60000) ); // Sorting employees by salary in descending order employees.stream() .sorted(Comparator.comparingInt(Employee::getSalary).reversed()) // Sorting in descending order .forEach(System.out::println); } } class Employee { private String name; private int salary; public Employee(String name, int salary) { this.name = name; this.salary = salary; } public String getName() { return name; } public int getSalary() { return salary; } @Override public String toString() { return name + ": " + salary; } }
Тут використовується компаратор Comparator.comparingInt(Employee::getSalary).reversed(), який спочатку сортує співробітників за зарплатою у зростаючому порядку, а потім застосовує reversed(), щоб змінити порядок на спадний.
Дякуємо за ваш відгук!