Kako usporediti dva niza u Java
โก Pametni saลพetak
Usporeฤivanje dva niza znakova u Java moลพe se postiฤi s nekoliko metoda koje usporeฤuju niz znakova radi jednakosti ili redoslijeda. Ovaj resurs objaลกnjava sedam pristupa, ukljuฤujuฤi metode String equals, Objects equals, compareTo, StringUtils, operator == i prilagoฤenu metodu usporedbe, svaki s primjerima.
Metode za usporedbu nizova Java
Java pruลพa razliฤite metode koje moลพete iskoristiti za usporedbu dva niza Java. Usporedba nizova u Java je znaฤajka koja povezuje niz znakova s โโnizom.
Da biste nauฤili kako usporediti nizove u Java, moลพete koristiti metode koje pruลพaju sljedeฤe klase:
- Klasa stringova iz paketa java.lang.
- Klasa Objekti iz paketa java.util.
- Klasa StringUtils iz paketa org.apache.commons.lang3.
Veฤina tih Java Metode za usporedbu nizova imaju rjeลกenja za ignoriranje velikih i malih slova. U ovom vodiฤu nauฤit ฤete razliฤite metode koje moลพete koristiti za usporedbu dva niza.
Metoda 1: Metoda String equals().
The Java Niz jednako() metoda usporeฤuje dva objekta niza za jednake vrijednosti niza.
Sintaksa:
public boolean equals(Object anObject)
parametri metode equals():
anObject โ Niz argumenata za usporedbu nizova.
return vrste metode equals().
- Vraฤa true ako je navedeni literal niza isti kao prvi niz.
- Vraฤa false ako prvi niz nije isti kao niz argumenta.
Primjer:
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));
}
}
Oฤekivani rezultat:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Objaลกnjenje:
- Dobili ste false u zadnjem izlazu jer navedeni objekt ima razliฤita velika i mala slova.
Biljeลกka: Koristite metodu string equals() za usporedbu stringova koja razlikuje velika i mala slova. Koristite metodu "equalsIgnoreCase" za usporedbu string objekata bez obzira na velika i mala slova.
Metoda 2: Metoda Objects equals().
The Java Objekti jednako() metoda usporeฤuje dva objekta niza kako bi otkrila imaju li iste vrijednosti.
Sintaksa:
public static boolean equals(Object a, Object b)
parametri metode equals().
a โ Niz argumenata za prvi objekt niza.
b โ Niz argumenata za drugi objekt niza.
return vrste metode equals().
- Vraฤa true ako su literali niza jednaki. Prosljeฤivanje nulte vrijednosti u dva argumenta takoฤer ฤe vratiti true.
- Vraฤa false ako literali niza nisu jednaki.
Primjer:
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)); } }
Izlaz:
is Guru99 equal to Guru99: true is Guru99 equal to Guru99: true
Objaลกnjenje:
Iz ovog primjera moลพete vidjeti da je izlaz logiฤka vrijednost true, buduฤi da su usporeฤeni nizovi jednaki.
Metoda 3: String compareTo() metoda
The Java Niz compareTo() metoda usporeฤuje dva niza abecednim redom. Obiฤno se naziva leksikografski poredak.
Sintaksa:
public int compareTo(String str)
parametri metode compareTo().
str โ Niz za usporedbu s trenutnim nizom.
metoda compareTo() vraฤa
- 0 โ Vraฤa nulu ako je navedeni objekt jednak trenutnom nizu.
- < 0 โ Vraฤa broj manji od nule ako je ovaj niz manji od navedenog objekta.
- > 0 โ Vraฤa broj veฤi od nule ako ovaj niz premaลกuje navedeni niz.
Primjer:
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));
}
}
Oฤekivani rezultat:
is Guru99 equal to Guru99: 0 is Guru99 equal to GURU99: 32
Objaลกnjenje:
Prvi rezultat vraฤa vrijednost nula, buduฤi da su prvi i drugi niz znakova jednaki.
Drugi rezultat vraฤa vrijednost trideset i dva, buduฤi da su znakovi razliฤiti.
Biljeลกka: Za zanemarivanje velikih i malih slova moลพete koristiti metodu "compareToIgnoreCase".
Metoda 4: Metoda StringUtils equals().
The Java StringUtils jednako() metoda usporeฤuje jednakost dva niza znakova.
Provjerite jeste li u svoj program dodali biblioteku โorg.apache.commons.lang3โ. To ฤe vam omoguฤiti usporedbu nizova pomoฤu metoda StringUtils.
Za Maven projekte koristite ovo voditi za dodavanje knjiลพnice u projekt.
Meฤutim, ako ลพelite dodati biblioteku bez ikakvih alata za izgradnju, koristite ovo voditi.
Sintaksa:
public static boolean equals(CharSequence cs1, CharSequence cs2)
Parametri metode StringUtils equals().
- cs1 โ Niz znakova za prvi argument.
- cs2 โ Niz znakova za drugi argument.
Metoda StringUtils equals() vraฤa
- Vraฤa vrijednost true ako je usporedba nizova jednaka. Takoฤer se primjenjuje ako u dva argumenta proslijedite vrijednost null.
- Vraฤa false ako usporedba niza nije jednaka.
Primjer:
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)); } }
Izlaz:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Objaลกnjenje:
Buduฤi da su sadrลพaji prvog i drugog niza jednaki, rezultat vraฤa true.
Moลพete koristiti metodu โequalsIgnoreCaseโ da zanemarite velika i mala slova.
Metoda 5: Metoda StringUtils equalsAny().
The Java StringUtils equalsAny() metoda provjerava postoji li niz u argumentima.
Sintaksa:
public static boolean equalsAny(CharSequence string, CharSequence... searchStrings)
Parametri metode StringUtils equalsAny().
- niz โ vrijednost niza za prvi argument. Argument takoฤer moลพe imati vrijednost null.
- searchStrings โ Skup argumenata niza za metodu koja pronalazi postoji li prvi niz argumenata.
Metoda StringUtils equalsAny() vraฤa
- Vraฤa vrijednost true ako niz za traลพenje postoji u varijabli broj nizova za pretraลพivanje. To se primjenjuje ako su oba argumenta null.
- Vraฤa false ako niz za podudaranje ne odgovara niti jednom nizu u varijabli broja nizova za pretraลพivanje.
Primjer:
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)); } }
Izlaz:
is Guru99 available: true is GURU99 available: false
Objaลกnjenje:
Buduฤi da su sadrลพaji prvog i drugog niza jednaki, rezultat vraฤa true. Moลพete koristiti metodu โequalsAnyIgnoreCaseโ da zanemarite velika i mala slova.
Metoda 6: Koriลกtenje operatora ==
Operator == na nizovima provjerava imaju li reference objekta istu adresu.
Primjer:
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));
}
}
Oฤekivani rezultat:
is Guru99 == to Guru99: true is Guru99 == to GURU99: false
Objaลกnjenje:
- Prvi rezultat vraฤa logiฤku vrijednost true. Nizovi s istim sadrลพajem dodaju se u isti skup nizova, stoga nizovi dijele jednu adresu.
- Drugi rezultat vraฤa logiฤku vrijednost false. Objekti imaju razliฤit sadrลพaj, ลกto rezultira razliฤitim skupovima stringova. To znaฤi da stringovi imaju odvojene reference na objekte; stoga je izlaz false.
Metoda 7: Stvaranje prilagoฤene metode za usporedbu dva niza Java
Napravite metodu koja usporeฤuje dva niza pomoฤu leksikografskog reda.
Sintaksa:
public static int compareTwoStrings(String str1, String str2)
Parametri prilagoฤene metode
- str1 โ Niz za usporedbu.
- str2 โ Niz s kojim se usporeฤuje.
Prilagoฤena metoda povrata
- 0 โ Vraฤa nulu ako je prvi niz jednak drugom nizu.
- < 0 โ Vraฤa broj manji od nule ako je prvi niz manji od drugog niza.
- > 0 โ Vraฤa broj veฤi od nule ako je prvi niz veฤi od drugog niza.
Primjer:
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));
}
}
Oฤekivani rezultat:
is Guru99 equal to Guru99: 0
Objaลกnjenje:
Rezultat je vratio vrijednost nula, ลกto znaฤi da prilagoฤena funkcija radi prema oฤekivanjima.

