Kako usporediti dva niza u Java
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.
- String klasa iz Java.lang paket.
- Klasa objekata iz Java.util paket.
- Klasa StringUtils iz paketa org.apache.commons.lang3.
Većina tih Java metode usporedbe nizova imaju rješenja za ignoriranje malih i malih slova. U ovom Java tutorial, 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ške: Upotrijebite metodu string equals za usporedbu nizova koja razlikuju velika i mala slova. Koristite metodu “equalsIgnoreCase” za usporedbu objekata niza s različitim vrijednostima niza.
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 booleova vrijednost true jer 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 jer su prvi i drugi niz jednaki.
Drugi rezultat vraća vrijednost trideset dva jer su znakovi različiti.
Bilješka: Za ignoriranje slučajeva možete koristiti metodu "compareToIgnoreCase".
Metoda 4: Metoda StringUtils equals().
The Java StringUtils jednako() metoda uspoređuje jednakost dva niza znakova.
Provjerite jeste li dodali biblioteku “org.apache.commons.lang3” u svoj program. To će vam omogućiti usporedbu nizova pomoću metoda StringUtil.
Za Maven projekte koristite ovo voditi za dodavanje knjižnice u projekt.
Međutim, ako želite dodati biblioteku bez alata za izgradnju, koristite ovo voditi.
Sintaksa:
public static boolean equals(CharSequnce 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 true ako je usporedba niza jednaka. Primjenjuje se ako proslijedite vrijednost null u dva argumenta.
- 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 true ako niz za podudaranje postoji u varijabli broja nizova za pretraživanje. Ovo se primjenjuje ako su oba argumenta nula.
- 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 Booleovu vrijednost true. Nizovi s istim sadržajem dodaju se u isti skup nizova stoga nizovi dijele jednu adresu.
- Drugi rezultat vraća Booleovu vrijednost false. Objekti imaju različite sadržaje, što rezultira drugim skupovima nizova. To znači da nizovi imaju zasebne reference na objekte; stoga je izlaz lažan.
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.
Sažetak:
The Java metoda usporedbe dva niza ovisi o sljedećim čimbenicima.
- Želja da imate kontrolu nad svojom metodom. U tom slučaju izradite prilagođenu metodu.
- Ne možete koristiti naslijeđeni kod. s Java 6 i niže.
- Metoda koja ima optimalne performanse.
- Vrsta podataka s kojima radite. Na primjer, podudaranje niza iz skupa varijabilnih argumenata.
- Značajke koje pruža vanjska knjižnica. Na primjer, biblioteka StringUtils pruža različite metode za usporedbu nizova.