Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Упорядкування Елементів за Допомогою Методу sorted() | Проміжні Операції у Stream API
Stream API

bookУпорядкування Елементів за Допомогою Методу sorted()

У Stream API Java метод sorted() дозволяє ефективно впорядковувати елементи потоку. Сортування є важливою операцією, оскільки спрощує обробку даних і полегшує розміщення елементів у потрібному порядку.

Сортування у природному порядку

Метод sorted() є перевантаженим і має дві версії. Розглянемо першу з них:

Stream<T> sorted();  

Ця версія сортує елементи на основі їхньої природної впорядкованості. Для використання цього методу елементи повинні реалізовувати інтерфейс Comparable, що дозволяє їм автоматично порівнюватися та впорядковуватися.

Практичний приклад

Уявіть собі фабрику з різними деталями, кожна з яких має унікальну вагу. Мета — відсортувати ці деталі у зростаючому порядку за їхньою вагою, використовуючи інтерфейс Comparable.

Main.java

Main.java

copy
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
package 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

Main.java

copy
123456789101112131415161718192021222324252627282930313233343536373839404142434445
package 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(), щоб змінити порядок на спадний.

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 5

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Awesome!

Completion rate improved to 2.33

bookУпорядкування Елементів за Допомогою Методу sorted()

Свайпніть щоб показати меню

У Stream API Java метод sorted() дозволяє ефективно впорядковувати елементи потоку. Сортування є важливою операцією, оскільки спрощує обробку даних і полегшує розміщення елементів у потрібному порядку.

Сортування у природному порядку

Метод sorted() є перевантаженим і має дві версії. Розглянемо першу з них:

Stream<T> sorted();  

Ця версія сортує елементи на основі їхньої природної впорядкованості. Для використання цього методу елементи повинні реалізовувати інтерфейс Comparable, що дозволяє їм автоматично порівнюватися та впорядковуватися.

Практичний приклад

Уявіть собі фабрику з різними деталями, кожна з яких має унікальну вагу. Мета — відсортувати ці деталі у зростаючому порядку за їхньою вагою, використовуючи інтерфейс Comparable.

Main.java

Main.java

copy
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
package 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

Main.java

copy
123456789101112131415161718192021222324252627282930313233343536373839404142434445
package 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(), щоб змінити порядок на спадний.

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 5
some-alt