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.