Главная / Веб-программирование / Как сравнить String по их длине в Java 7 и Java 8?

Как сравнить String по их длине в Java 7 и Java 8?

Привычным способом Java сравнения строк является лексикографический способ, реализованный в методе compareTo() класса String. Но иногда нужно сравнить строки по их длине. По умолчанию нельзя использовать для этого метод compareTo(). Вместо этого нужно написать собственный метод, который вычисляет длину строк с помощью метода length() и сравнивает их. Такой метод должен возвращать положительное значение, если первая String имеет длину больше второй; отрицательное значение, если длина первой String меньше длины второй и ноль, если обе String имеют одинаковую длину.

Можно определить такой одноразовый метод, используя анонимный внутренний класс, и далее использовать его для сортировки списка строк по длине. Это метод хорошо работает в Java 6 и 7, но в Java 8 он работает еще лучше из-за меньшего количества помех благодаря новой функции, называемой лямбда-выражения.

Вот как можно сделать это в более ранних версиях Java:

public int compare(String s1, String s2) {
return s1.length() — s2.length();
}

Сравнение длины строк arraylist в Java 8 можно сделать еще проще, используя лямбда-выражение и новые методы по умолчанию, добавленные в класс java.util.Comparator:

Comparator<String> strlenComp = (a, b) -> Integer.compare(a.length(), b.length());

a и b — это два объекта String. Integer.compare() — это новый метод, добавленный в Java 8. Поскольку мы используем компаратор для строк, компилятор в состоянии выводить типы a и b, которые являются String.

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

Ниже приведен пример использования этого компаратора длины строк для сортировки списка строк по их длине. В этом примере мы продемонстрировали программы на JDK 6 и 7 с использованием анонимного класса, и новый способ с использованием лямбда-выражений, который доступен в Java 8. Он занимает всего одну строку и его намного проще понять, если вы знакомы с синтаксисом лямбда-выражений.

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

Java 6, 7

Import java.util.ArrayList;
Import java.util.Arrays;
Import java.util.Collections;
Import java.util.Comparator;
Import java.util.List;

/ *
* Программа Java для сортировки списка строк по их длине
* /

public class StringComparisonByLength{

Public static void main (String [] args) {

List<String> books = new ArrayList<>(Arrays.asList("Effective Java", "Algorithms", "Refactoring" ));
System.out.println("Sorting List of String by length in JDK 7 ======");
System.out.println("The original list without sorting");
System.out.println(books);

Comparator<String> byLength = new Comparator<String>(){
@Override
Public int compare (String s1, String s2) {
Return s1.length () — s2.length ();
}
};

Collections.sort(books, byLength);
System.out.println("The same list after sorting string by length");

System.out.println(books);
}
}

Результат

Sorting List of String by length in JDK 7 ======
The original list without sorting [Effective Java, Algorithms, Refactoring] The same list after sorting string by length
[Algorithms, Refactoring, Effective Java]

Java 8

Import java.util.ArrayList;
Import java.util.Arrays;
Import java.util.Comparator;
Import java.util.List;
/ *
* Программа Java для сортировки списка строк по их длине в JDK 8
* /

public class SortingListOfStringByLength{

public static void main(String[] args) {

// В Java 8
System.out.println("Sorting List of String by length in Java 8 ======");

List<String> cities = new ArrayList<>(Arrays.asList("London", "Tokyo", "NewYork"));
System.out.println("The original list without sorting");
System.out.println(cities);

cities.sort((first, second) -> Integer.compare(first.length(), second.length()));

System.out.println("The same list after sorting string by length");
System.out.println(cities);
}
}

Результат

Sorting List of String by length in Java 8 ======
The original list without sorting
[London, Tokyo, NewYork] The same list after sorting string by length
[Tokyo, London, NewYork]

Это все, что касается сравнения длины строк Java и сортировки списка String по длине в Java 7 и Java 8. В последней версии языка делать это намного удобнее, поскольку можно создать пользовательский компаратор только одной строкой, используя лямбда-выражение. API JDK 8 содержит множество подобных методов, которые облегчают еще более сложные сравнения. Например, используя метод thenComparing(), можно связать несколько компараторов.

Перевод статьи «How to compare String by their length in Java 7 and 8» дружной командой проекта Сайтостроение от А до Я.

О нас seoexpert

продвижение сайта,seo оптимизация,поисковое продвижение,раскрутка сайтов,поисковая оптимизация,продвижение сайта в гугл,seo раскрутка,продвижение сайтов в яндексе,продвижение сайта в google,продвижение сайтов в топ 10,Оптимизация и продвижение сайтов,услуги продвижения сайта,заказать продвижение,продвижение сайтов в топ,сео раскрутка сайта

Смотрите также

Определение типа данных double в C, C++ и C#

Double – 64-разрядная переменная с плавающей запятой Тип double — это основной тип данных, который ...