Как отсортировать строки в java
Перейти к содержимому

Как отсортировать строки в java

  • автор:

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

В этом посте мы обсудим, как отсортировать список строк в лексикографическом порядке в Java.

1. Использование Collections.sort() метод

Простое решение для на месте отсортировать список строк в лексикографическом порядке с помощью Collections.sort() метод. Он принимает изменяемый список, размер которого не обязательно должен изменяться.

результат:

[Amazon, Apple, Facebook, Google, Netflix]

The Collections.sort() метод необязательно принимает компаратор, чтобы обеспечить точный контроль над порядком сортировки. Чтобы сделать сравнение между двумя строками нечувствительными к регистру, вы можете использовать String.CASE_INSENSITIVE_ORDER comparator.

результат:

[Amazon, APPLE, Facebook, GOOGLE, Netflix]

2. Использование List.sort() метод

Другой альтернативой сортировке списка строк на месте является метод List.sort() метод, добавленный в спецификацию JDK 1.8. Collections.sort() метод представляет собой оболочку над List.sort() метод. Следовательно, приведенный выше код эквивалентен:

результат:

[Amazon, Apple, Facebook, Google, Netflix]

Вы можете использовать String.CASE_INSENSITIVE_ORDER компаратор, чтобы операция сортировки сравнивала строки, игнорируя их порядок.

результат:

[Amazon, APPLE, Facebook, GOOGLE, Netflix]

3. Использование Stream.sorted() метод

Чтобы создать отсортированную копию списка, вы можете использовать Java 8 Stream. Идея состоит в том, чтобы создать последовательный поток по элементам в списке, отсортировать поток с помощью sorted() и соберите все отсортированные элементы в новый список. Это показано ниже:

Сортировка символов строки по алфавиту в Java

В этом уроке мы покажем, как сортировать String по алфавиту.

Может быть много причин, по которым мы хотели бы это сделать — одна из них может быть проверка, если два слова состоят из одного и того же набора символов. Так мы проверим, являются ли они анаграммой.

2. Сортировка строки​

Внутри String использует для работы массив символов. Поэтому мы можем использовать метод toCharArray() : char[] , отсортировать массив и создать новую строку на основе результата:

В Java 8 мы можем использовать Stream API для сортировки строки за нас:

Здесь мы используем тот же алгоритм, что и в первом примере, но сортируем массив символов с помощью метода Stream sorted() .

Обратите внимание, что символы сортируются по их кодам ASCII , поэтому в начале всегда будут стоять заглавные буквы. Итак, если мы хотим отсортировать «abC», результатом сортировки будет «Cab».

Чтобы решить эту проблему, нам нужно преобразовать строку с помощью метода toLowerCase() . Мы собираемся сделать это в нашем примере валидатора Anagram.

3. Тестирование​

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

Давайте посмотрим на наш класс AnagramValidator :

Теперь мы воспользуемся нашим методом сортировки и проверим, верна ли анаграмма:

4. Вывод​

В этой быстрой статье мы показали, как String можно отсортировать в алфавитном порядке двумя способами. Кроме того, мы внедрили валидатор анаграмм, который использует метод сортировки строк.

Как правильно делать сортировку в Java

Как правильно делать сортировку в Java - 1

Анализируя исходные коды многих opensource Java-проектов, я обнаружил, что большинство разработчиков осуществляют сортировку всего двумя разными способами. Один из них основан на применении метода sort() классов Collections или Arrays , а другой на использовании самосортирующихся структур данных, таких как TreeMap и TreeSet .

Java Sort String Array Example

Java String array sort example shows how to sort string array in Java using Collections class and custom comparator in descending and ascending orders.

How to sort String array in Java?

There are several methods using which you can sort an array of strings.

1) Sort string array using the Arrays class

A string array can be sorted using the sort method of the Arrays class.

This method sorts an array using the natural ordering of the array elements in ascending order.

2) Using the Collections class

You can also use the sort method of Collections class along with the asList method to sort an array.

This method sorts the list in ascending order according to the natural order of its elements.

Note: The sort method of the Collections class accepts a List as an argument. To sort an array of strings, you first need to convert array to list using the asList method of the Arrays class.

Please note that the asList method provides an abstract list view on the top of the original array. Hence, sorting a list will also modify the underlying original array.

How to sort array in descending order?

By default, the sort method of the Arrays and Collections class sorts an array in ascending order. However, you can use the reverseOrder method of the Collections class to sort array in descending order.

This method returns a comparator that uses the reverse of the natural ordering of the collection elements (descending order for string elements).

You can also use the sort method of the Collections class as given below.

How to sort using custom comparator?

As you may have noticed from the output that when we sort an array using the sort method, it outputs “PlayStation” before “Playhouse” and “Zintec” before “ak56” string values.

That is because the sort method sorts string values according to the ASCII values. ASCII value of the capital letter “Z” (90) is less than the ASCII value of the small letter “a” (97) so “Zintec” comes before “ak56” value. What if you want to sort an array of string values regardless of the case of the values? A custom comparator can be used as given below.

Добавить комментарий

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