Як порівняти два рядки в Java
⚡ Розумний підсумок
Порівняння двох рядків у Java можна виконати за допомогою кількох методів, які зіставляють послідовність символів для визначення рівності або порядку. У цьому ресурсі пояснюється сім підходів, включаючи методи String equals, Objects equals, compareTo, StringUtils, оператор == та користувацький метод порівняння, кожен з прикладами.

Методи порівняння рядків Java
Java надає різні методи, якими можна скористатися для порівняння двох рядків Java. Порівняння рядків в Java це функція, яка зіставляє послідовність символів із рядком.
Щоб навчитися порівнювати рядки в Java, ви можете використовувати методи, що надаються наступними класами:
- Клас String з пакету java.lang.
- Клас Objects з пакета java.util.
- Клас StringUtils з пакету org.apache.commons.lang3.
Більшість з них Java Методи порівняння рядків мають рішення для ігнорування регістру. У цьому посібнику ви дізнаєтеся про різні методи, які можна використовувати для порівняння двох рядків.
Метод 1: метод String equals().
Команда Java рядок метод equals(). порівнює два рядкові об’єкти для однакових рядкових значень.
Синтаксис:
public boolean equals(Object anObject)
Параметри методу equals():
anObject – Рядок аргументу для порівняння рядків.
типи повернення методу equals().
- Повертає true, якщо наданий рядковий літерал збігається з першим рядком.
- Повертає false, якщо перший рядок не збігається з рядком аргументу.
приклад:
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: "+stringOne.equals(stringTwo));
String stringThree = "GURU99";
System.out.println("is Guru99 equal to GURU99: "+stringOne.equals(stringThree));
}
}
Очікуваний результат:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Пояснення:
- Ви отримали false в останньому виведенні, оскільки вказаний об’єкт має інший регістр.
Примітка: Використовуйте метод string equals() для порівняння рядків з урахуванням регістру. Використовуйте метод “equalsIgnoreCase” для порівняння рядкових об’єктів з ігноруванням регістру.
Спосіб 2: Метод Objects equals().
Команда Java Об'єкти дорівнюють() метод порівнює два рядкові об’єкти, щоб визначити, чи мають вони однакові значення.
Синтаксис:
public static boolean equals(Object a, Object b)
параметри методу equals().
a – рядок аргументів для першого рядкового об’єкта.
b – Рядок аргументів для другого рядкового об’єкта.
типи повернення методу equals().
- Повертає true, якщо рядкові літерали рівні. Передача нульового значення в двох аргументах також поверне значення true.
- Повертає false, якщо рядкові літерали не рівні.
приклад:
import java.util.Objects; public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringOne, stringTwo)); String stringThree = null; String stringFour = null; System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringThree, stringFour)); } }
вихід:
is Guru99 equal to Guru99: true is Guru99 equal to Guru99: true
Пояснення:
З цього прикладу видно, що результатом є логічне значення true, оскільки рядки, що порівнюються, рівні.
Метод 3: метод String compareTo().
Команда Java Рядок compareTo() метод порівнює два рядки в алфавітному порядку. Його зазвичай називають лексикографічним порядком.
Синтаксис:
public int compareTo(String str)
параметри методу compareTo().
str – Рядок для порівняння з поточним рядком.
метод compareTo() повертає
- 0 – повертає нуль, якщо вказаний об’єкт дорівнює поточному рядку.
- < 0 – повертає число менше нуля, якщо цей рядок менший за вказаний об’єкт.
- > 0 – повертає число більше за нуль, якщо цей рядок перевищує наданий рядок.
приклад:
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: " + stringOne.compareTo(stringTwo));
String stringThree = "GURU99";
// u = 117, U = 85, result = 117-85 = 32
System.out.println("is Guru99 equal to GURU99: " + stringOne.compareTo(stringThree));
}
}
Очікуваний результат:
is Guru99 equal to Guru99: 0 is Guru99 equal to GURU99: 32
Пояснення:
Перший результат повертає значення нуль, оскільки перший і другий рядки рівні.
Другий результат повертає значення тридцять два, оскільки символи різні.
Примітка: Щоб ігнорувати регістр, можна скористатися методом «compareToIgnoreCase».
Спосіб 4: метод StringUtils equals().
Команда Java StringUtils дорівнює() метод порівнює рівність двох послідовностей символів.
Переконайтеся, що ви додали бібліотеку «org.apache.commons.lang3» до своєї програми. Це дозволить вам порівнювати рядки за допомогою методів StringUtils.
Для проектів Maven використовуйте це керівництво щоб додати бібліотеку до проекту.
Однак, якщо ви хочете додати бібліотеку без будь-яких інструментів збірки, скористайтеся цим керівництво.
Синтаксис:
public static boolean equals(CharSequence cs1, CharSequence cs2)
Параметри методу StringUtils equals().
- cs1 – послідовність символів для першого аргументу.
- cs2 – послідовність символів для другого аргументу.
Повертає метод StringUtils equals().
- Повертає значення true, якщо порівняння рядків дорівнює. Це також застосовується, якщо ви передаєте значення null у двох аргументах.
- Повертає false, якщо порівняння рядків нерівне.
приклад:
import org.apache.commons.lang3.StringUtils; public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 equal to Guru99: " + StringUtils.equals(stringOne, stringTwo)); String stringThree = "GURU99"; System.out.println("is Guru99 equal to GURU99: " + StringUtils.equals(stringOne, stringThree)); } }
вихід:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Пояснення:
Оскільки вміст першого та другого рядків однакові, результат повертає значення true.
Ви можете використовувати метод “equalsIgnoreCase”, щоб ігнорувати регістр.
Метод 5: метод StringUtils equalsAny().
Команда Java StringUtils дорівнює будь-якому() метод перевіряє, чи існує рядок в аргументах.
Синтаксис:
public static boolean equalsAny(CharSequence string, CharSequence... searchStrings)
Параметри методу StringUtils equalsAny().
- рядок – рядкове значення для першого аргументу. Аргумент також може мати нульове значення.
- searchStrings – набір рядкових аргументів для методу, щоб знайти, чи присутній перший рядок аргументу.
Повертає метод StringUtils equalsAny().
- Повертає значення true, якщо рядок, з яким потрібно зіставити значення, існує у змінній "кількість рядків пошуку". Це застосовується, якщо обидва аргументи мають значення null.
- Повертає false, якщо рядок, який потрібно знайти, не відповідає жодному рядку в змінній кількості рядків пошуку.
приклад:
import org.apache.commons.lang3.StringUtils; public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String[] stringTwo = new String[] { "Guru99", "JavaGuru99" }; System.out.println("is Guru99 available: " + StringUtils.equalsAny(stringOne, stringTwo)); String[] stringThree = new String[] { "GURU99", "JavaGuru99" }; System.out.println("is GURU99 available: " + StringUtils.equalsAny(stringOne, stringThree)); } }
вихід:
is Guru99 available: true is GURU99 available: false
Пояснення:
Оскільки вміст першого та другого рядків однакові, результат повертає true. Ви можете використовувати метод “equalsAnyIgnoreCase”, щоб ігнорувати регістр.
Спосіб 6: Використання оператора ==
Оператор == для рядків перевіряє, чи мають посилання на об’єкт однакову адресу.
приклад:
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 == to Guru99: " + (stringOne == stringTwo));
String stringThree = "GURU99";
System.out.println("is Guru99 == to GURU99: " + (stringOne == stringThree));
}
}
Очікуваний результат:
is Guru99 == to Guru99: true is Guru99 == to GURU99: false
Пояснення:
- Перший результат повертає логічне значення true. Рядки з однаковим вмістом додаються до одного пулу рядків, отже, рядки мають одну спільну адресу.
- Другий результат повертає логічне значення false. Об'єкти мають різний вміст, що призводить до різних пулів рядків. Це означає, що рядки мають окремі посилання на об'єкти; таким чином, результат є false.
Спосіб 7: Створення спеціального методу для порівняння двох рядків Java
Створіть метод, який порівнює два рядки за допомогою лексикографічного порядку.
Синтаксис:
public static int compareTwoStrings(String str1, String str2)
Параметри спеціального методу
- str1 – Рядок для порівняння.
- str2 – Рядок для порівняння.
Користувацький метод повертає
- 0 – повертає нуль, якщо перший рядок дорівнює другому рядку.
- < 0 – повертає число менше нуля, якщо перший рядок менший за другий.
- > 0 – повертає число, більше за нуль, якщо перший рядок більший за другий.
приклад:
public class CompareTwoStrings {
public static int compareTwoStrings(String stringOne, String stringTwo) {
int lengthOfStringOne = stringOne.length();
int lengthOfStringTwo = stringTwo.length();
int minStringLength = Math.min(lengthOfStringOne, lengthOfStringTwo);
for (int i = 0; i < minStringLength; i++) {
char stringOneCharValue = stringOne.charAt(i);
char stringTwoCharValue = stringTwo.charAt(i);
if (stringOneCharValue != stringTwoCharValue) {
return stringOneCharValue - stringTwoCharValue;
}
}
if (lengthOfStringOne != lengthOfStringTwo) {
return lengthOfStringOne - lengthOfStringTwo;
} else {
return 0;
}
}
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: " + compareTwoStrings(stringOne, stringTwo));
}
}
Очікуваний результат:
is Guru99 equal to Guru99: 0
Пояснення:
Результат повернув нульове значення, що означає, що спеціальна функція працює належним чином.
