Сортировка массива в порядке убывания java

Содержание
  1. Сортировка массивов в Java
  2. 2. Определения объектов
  3. 3. Сортировка по возрастанию
  4. 3.1. Примитивы
  5. 3.2. Объекты, которые реализуют сопоставимые
  6. 3.3. Объекты, которые нельзя реализовать, сопоставимые
  7. 4. Сортировка по убыванию
  8. 4.1. Примитивы
  9. 4.2. Объекты, которые реализуют сопоставимые
  10. 4.3. Объекты, которые нельзя реализовать, сопоставимые
  11. 5. Заключение
  12. Сортировка массива в Java
  13. 1. Сортировка массива с помощью Arrays.sort() метод
  14. 2. Сортировка массива с помощью Arrays.parallelSort() метод
  15. Кофе-брейк #136. Сортировка массива в порядке возрастания или убывания с помощью Arrays.sort(). В чем разница между интерфейсами List и Set?
  16. Сортировка массива в порядке возрастания или убывания с помощью Arrays.sort()
  17. Как отсортировать массив в порядке возрастания в Java с помощью Arrays.sort()
  18. Как отсортировать массив по убыванию в Java с помощью Collections.reverseOrder()
  19. Заключение
  20. Java Collection. В чем разница между интерфейсами List и Set?
  21. Различия между интерфейсами Set и List в Java
  22. Реализация
  23. Индексация
  24. Порядок
  25. Объект Null
  26. Дубликаты
  27. Когда следует использовать List и Set?
  28. Пример Set
  29. Пример List

Сортировка массивов в Java

В этом руководстве мы обсудим общие методы сортировкиarrays в порядке возрастания и убывания.

Мы рассмотрим использование Java-метода сортировки классовArrays, а также реализацию нашего собственногоComparator для упорядочивания значений наших массивов.

2. Определения объектов

Прежде чем мы начнем, давайте быстро определим несколько массивов, которые мы будем отсортировать в этом руководстве. Сначала мы создадим массивints и массив строк:

int[] numbers = new int[] < -8, 7, 5, 9, 10, -2, 3 >; String[] strings = new String[] < "learning", "java", "with", "example" >;

И давайте также создадим массив объектовEmployee , в котором каждый сотрудник имеет атрибутid иname :

Employee john = new Employee(6, "John"); Employee mary = new Employee(3, "Mary"); Employee david = new Employee(4, "David"); Employee[] employees = new Employee[] < john, mary, david >;

3. Сортировка по возрастанию

Метод Javautil.Arrays.sort предоставляет нам быстрый и простой способ отсортировать массив примитивов или объектов, реализующих интерфейсComparable, в порядке возрастания.

Читайте также:  Python process finished with exit code 1073741571 0xc00000fd

При сортировке примитивов методArrays.sort использует реализацию Dual-PivotQuicksort. Однако при сортировке объектов используется итеративная реализацияMergeSort.

3.1. Примитивы

Чтобы отсортировать примитивный массив в порядке возрастания, мы передаем наш массив методуsort :

Arrays.sort(numbers); assertArrayEquals(new int[] < -8, -2, 3, 5, 7, 9, 10 >, numbers);

3.2. Объекты, которые реализуют сопоставимые

Для объектов, реализующих синтерфейсComparable , как и в случае с нашим примитивным массивом, мы также можем просто передать наш массив методуsort:

Arrays.sort(strings); assertArrayEquals(new String[] < "example", "java", "learning", "with" >, strings);

3.3. Объекты, которые нельзя реализовать, сопоставимые

Сортировка объектов, которые не реализуют интерфейсComparable Interface, как наш массивEmployees, требует от нас указания нашего собственного компаратора.

Мы можем сделать это очень легко в Java 8, указав свойство, которое мы хотели бы сравнить с нашими объектамиEmployee objects внутри нашегоComparator:

Arrays.sort(employees, Comparator.comparing(Employee::getName)); assertArrayEquals(new Employee[] < david, john, mary >, employees);

В данном случае мы указали, что хотим упорядочить наших сотрудников по их атрибутамname .

Мы также можем отсортировать наши объекты по более чем одному атрибуту, связав наши сравнения в цепочку с помощью методаComparator’s thenComparing :

Arrays.sort(employees, Comparator.comparing(Employee::getName).thenComparing(Employee::getId));

4. Сортировка по убыванию

4.1. Примитивы

Сортировка примитивного массива в порядке убывания не так проста, как сортировка его в порядке возрастания, поскольку Java не поддерживает использование примитивных типовComparators on. Чтобы преодолеть этот недостаток, у нас есть несколько вариантов.

Во-первых, мы можемsort our array in ascending order and then do an in-place reversal массива.

Во-вторых, можно преобразовать наш массив в списокuse Guava’s Lists.reverse() method, а затем преобразовать наш список обратно в массив.

Наконец, мы можем преобразовать наш массив в песокStream , а затем отобразить его обратно в массивint. У него есть приятное преимущество:a one-liner and just using core Java:

numbers = IntStream.of(numbers).boxed().sorted(Comparator.reverseOrder()).mapToInt(i -> i).toArray(); assertArrayEquals(new int[] < 10, 9, 7, 5, 3, -2, -8 >, numbers);

Причина, по которой это работает, заключается в том, чтоboxed превращает каждыйint вInteger, которыйdoes реализуетComparator.

4.2. Объекты, которые реализуют сопоставимые

Сортировка массива объектов, реализующего синтерфейсComparable в порядке убывания, довольно проста. Все, что нам нужно сделать, это передатьComparator как второй параметр нашего методаsort.

В Java 8 мы можем использоватьComparator.reverseOrder() to, чтобы указать, что мы хотели бы, чтобы наш массив был отсортирован в порядке убывания:

Arrays.sort(strings, Comparator.reverseOrder()); assertArrayEquals(new String[] < "with", "learning", "java", "example" >, strings);

4.3. Объекты, которые нельзя реализовать, сопоставимые

Аналогично сортировке объектов, которые реализуют сопоставимые, мы можем изменить порядок нашего настраиваемогоComparator , добавивreversed() at в конце нашего определения сравнения:

Arrays.sort(employees, Comparator.comparing(Employee::getName).reversed()); assertArrayEquals(new Employee[] < mary, john, david >, employees);

5. Заключение

В этой статье мы обсудили, как сортировать массивы примитивов и объектов в порядке возрастания и убывания с помощью методаArrays.sort.

Как обычно, исходный код из этой статьи можно найтиover on Github.

Источник

Сортировка массива в Java

В этой статье будут обсуждаться различные методы сортировки массива примитивных типов или объектов в Java.

1. Сортировка массива с помощью Arrays.sort() метод

Arrays class предоставляет несколько статических методов для сортировки массивов:

Он сортирует указанный массив типов примитивов или объектов в порядке возрастания в соответствии с естественным порядком его элементов.

У него также есть версия, которая сортирует указанный массив между указанным диапазоном:

Arrays.sort() использует Dual-Pivot Quicksort, который предлагает O(n.log(n)) производительность. Обычно это быстрее, чем традиционный (одноповоротный) Быстрая сортировка реализации.

Он сортирует указанный массив объектов в соответствии с порядком, заданным указанным компаратором. Он требует, чтобы все элементы массива были взаимно сравнимы указанным компаратором, т. е. для любой пары элементов (e1, e2) в массиве, c.compare(e1, e2) не следует бросать ClassCastException .

⮚ Чтобы отсортировать по возрастанию:

⮚ Чтобы отсортировать по убыванию:

Arrays . sort ( arr , Comparator . reverseOrder ( ) ) ; // или используйте `Collections.reverseOrder()`)

Мы также можем написать собственный компаратор, как показано ниже:

Он также предоставляет версию, которая сортирует указанный массив объектов между указанным диапазоном в соответствии с порядком, заданным указанным компаратором:

Результатом такой сортировки является стабильная сортировка, т. е. будет поддерживаться относительный порядок равных элементов. Он использует итеративный Сортировка слиянием что требует гораздо меньше, чем n.log(n) сравнения, когда входной массив частично отсортирован, в противном случае предлагается производительность традиционной сортировки слиянием, когда входной массив упорядочен случайным образом.

2. Сортировка массива с помощью Arrays.parallelSort() метод

Java 8 также предоставляет Arrays.parallelSort() который использует несколько потоков для сортировки, в отличие от Arrays.sort() который использует только один поток для сортировки элементов. Прототип parallelSort() похоже на sort() .

Это бьет Arrays.sort() когда общее количество элементов превышает определенный порог. Внутри любой массив размером меньше порогового значения сортируется с помощью Arrays.sort() . Порог рассчитывается с учетом параллелизма машины и размера массива. Общий пул ForkJoin используется для выполнения любых параллельных задач.

Следующая программа на Java сравнивает производительность Arrays.parallelSort() с Arrays.sort() на огромном наборе данных из 10 миллионов целых чисел:

Источник

Кофе-брейк #136. Сортировка массива в порядке возрастания или убывания с помощью Arrays.sort(). В чем разница между интерфейсами List и Set?

Java-университет

Сортировка массива в порядке возрастания или убывания с помощью Arrays.sort()

Кофе-брейк #136. Сортировка массива в порядке возрастания или убывания с помощью Arrays.sort(). В чем разница между интерфейсами List и Set? - 1

Источник: FreeCodeCamp Благодаря этой публикации вы узнаете способы сортировки массива в Java по возрастанию или убыванию. В Java мы используем массивы для хранения набора переменных (с одинаковым типом данных) в одной переменной. Но иногда значения, хранящиеся в массиве, появляются в случайном порядке. Благодаря классу Arrays в Java у нас есть несколько способов управления массивами, в том числе их сортировки. Один из методов, которые мы будем использовать из класса Arrays , — это метод sort() , который сортирует массив в порядке возрастания. Для сортировки массива в порядке убывания используется метод reverseOrder() класса Collections в Java.

Как отсортировать массив в порядке возрастания в Java с помощью Arrays.sort()

Вот пример того, как мы можем использовать метод sort() для сортировки массива в порядке возрастания.

 import java.util.Arrays; class ArraySort < public static void main(String[] args) < int[] arr = < 5, 2, 1, 8, 10 >; Arrays.sort(arr); for (int values : arr) < System.out.print(values + ", "); // 1, 2, 5, 8, 10, >> > 

Первое, что мы сделали в приведенном выше примере, — это импортировали класс Arrays : import java.util.Arrays; . Так мы получили доступ ко всем методам класса Arrays . Затем мы создали массив с числами в случайном порядке: int[] arr = < 5, 2, 1, 8, 10 >; . Чтобы отсортировать этот массив в порядке возрастания, мы передали массив в качестве параметра методу sort() : Arrays.sort(arr); . Обратите внимание, что класс Arrays написан первым перед доступом к методу sort() с использованием записи через точку. Наконец, мы создали цикл и напечатали массив в консоли. В результате получился отсортированный массив: 1, 2, 5, 8, 10 . А сейчас давайте поговорим о сортировке массива по убыванию.

Как отсортировать массив по убыванию в Java с помощью Collections.reverseOrder()

Чтобы отсортировать массив в порядке убывания, следует использовать reverseOrder() , к которому можно получить доступ из класса Collections . Мы по-прежнему будем использовать Arrays.sort(); , но в этом примере он будет принимать два параметра — массив для сортировки и Collections.reverseOrder() .

 import java.util.Arrays; import java.util.Collections; class ArraySort < public static void main(String[] args) < Integer[] arr = < 5, 2, 1, 8, 10 >; Arrays.sort(arr, Collections.reverseOrder()); for (int values : arr) < System.out.print(values + ", "); // 10, 8, 5, 2, 1, >> > 

Первым делом мы импортировали классы Arrays и Collections , потому что мы будем использовать методы, предоставляемые этими классами. Затем мы создали массив чисел в случайном порядке: Integer[] arr = < 5, 2, 1, 8, 10 >; . Как можно заметить, мы использовали Integer[] вместо int[] , как в предыдущем примере. Иначе возникнет ошибка. Чтобы отсортировать массив по убыванию, мы сделали вот так: Arrays.sort(arr, Collections.reverseOrder()); . Первый параметр — это массив arr , который будет отсортирован в порядке возрастания. Второй параметр — Collections.reverseOrder() — затем изменит порядок отсортированного массива, чтобы он располагался в порядке убывания. При циклическом просмотре и печати массив будет выглядеть так: 10, 8, 5, 2, 1 .

Заключение

В этой статье мы обсудили сортировку массивов в Java — как их можно сортировать по возрастанию или по убыванию. Для этого мы можем использовать метод sort() , к которому можно получить доступ из класса Arrays . Метод sort() принимает массив для сортировки в качестве параметра. Чтобы отсортировать массив в порядке убывания, мы использовали метод reverseOrder() , предоставляемый классом Collections. Он передается в качестве второго параметра в метод sort() , чтобы отсортированный массив можно было переупорядочить в порядке убывания.

Java Collection. В чем разница между интерфейсами List и Set?

Источник: Rrtutors List и Set являются интерфейсами Java для расширения интерфейса Collection . В этой публикации мы рассмотрим ключевые различия между ними, а также варианты их применения.

Различия между интерфейсами Set и List в Java

Давайте определим ключевые различия между интерфейсами List и Set на основе следующих ключевых параметров:

Реализация

Индексация

Вы можете использовать ListIterator для перемещения по List как вперед, так и назад, но не по Set . Вместо этого используйте Iterator (который работает как с List , так и с Set ).

Порядок

Интерфейс Set не поддерживает какой-либо конкретный заданный порядок. Коллекция вида Set уже является отсортированной по своему правилу и ее просто так нельзя отсортировать. List — это упорядоченный список. Объекты хранятся в порядке их добавления в список. Доступ к элементам списка осуществляется по индексу.

Объект Null

List не имеют никаких ограничений и поддерживают добавление нулевых значений (Null values), в то время как Set допускает не более одного значения null.

Дубликаты

List могут содержать дубликаты, а Set — нет. Set не допускает дублирования элементов, поскольку все его элементы должны быть уникальными. Если вы вставите повторяющийся элемент в Set , существующее значение будет перезаписано.

Когда следует использовать List и Set?

Set — лучший выбор, когда вам просто нужно сохранить уникальные значения, поскольку он как раз для этого и предназначен. Но если вы хотите сохранить порядок вставки, несмотря на дублирование, лучше всего выбрать List .

Пример Set

 import java.util.ArrayList; import java.util.LinkedList; import java.util.List; public class ListExample < public static void main(String[] args) < Listal = new ArrayList(); al.add("Rohit"); al.add("Panjab"); al.add("Kamir"); System.out.println("My ArrayList Items: "); System.out.print(al); List ll = new LinkedList(); ll.add("Shobit"); ll.add("Raul"); ll.add("Ketel"); System.out.println("\n My LinkedList Items: "); System.out.print(ll); > > 

Пример List

 import java.util.HashSet; import java.util.Set; import java.util.TreeSet; public class SetExample < public static void main(String[] args) < int myList[] = ; Set dispSet = new HashSet(); try < for(int i = 0; iSystem.out.println(dispSet); TreeSet treeset = new TreeSet(dispSet); System.out.println("Sorting in Asceding order:"); System.out.println(treeset); > catch(Exception e) < e.printStackTrace(); >> > 

Источник

Оцените статью