Как да сравним два низа в 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: Обекти се равнява () метод
- Java Обекти е равно на () методът сравнява два низови обекта, за да установи дали имат еднакви стойности.
Синтаксис:
public static boolean equals(Object a, Object b)
параметри на метода equals().
a – Аргументен низ за първия низов обект.
b – Аргументен низ за втория низов обект.
връщани типове метод equals().
- Връща 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: Метод на низ 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 е равно на Any() методът проверява дали съществува низ в аргументите.
Синтаксис:
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
Обяснение:
Резултатът върна стойност нула, което означава, че персонализираната функция работи според очакванията.
