Hvordan sammenligne to strenger i Java

Metoder for å sammenligne strenger i Java

Java gir forskjellige metoder du kan bruke for å sammenligne to strenger i Java. Strengesammenligning i Java er en funksjon som matcher en sekvens av tegn til en streng.

For å lære å sammenligne strenger i Java, kan du bruke metodene gitt av følgende klasser.

  • Strengeklasse fra Java.lang-pakken.
  • Objektklasse fra Java.util-pakken.
  • StringUtils-klassen fra org.apache.commons.lang3-pakken.

De fleste av disse Java sammenligne strenger metoder har løsninger for å ignorere saken. I dette Java opplæringen, vil du lære de forskjellige metodene du kan bruke for å sammenligne to strenger.

Metode 1: Streng lik() metode

Ocuco Java String equals() metode sammenligner to strengobjekter for like strengverdier.

Syntaks:

public boolean equals(Object anObject)

equals() metodeparametere:

anObject – Argumentstrengen for å sammenligne strenger.

equals()-metodens returtyper

  • Returnerer sant hvis den angitte strengen er den samme som den første strengen.
  • Returnerer usann hvis den første strengen ikke er den samme som argumentstrengen.

Eksempel:

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));
  }
}

Forventet utgang:

is Guru99 equal to Guru99: true
is Guru99 equal to GURU99: false

Forklaring:

  • Du fikk usann i den siste utgangen fordi det spesifiserte objektet har en annen store og små bokstaver.

Merknader: Bruk string equals-metoden for å sammenligne strenger som skiller mellom store og små bokstaver. Bruk "equalsIgnoreCase"-metoden for å sammenligne strengobjekter med forskjellige strengverdier.

Metode 2: Objects equals() metode

Ocuco Java Objekter er lik() metoden sammenligner to strengobjekter for å finne om de har samme verdier.

Syntaks:

public static boolean equals(Object a, Object b)

equals() metodeparametere

a – Argumentstreng for det første strengobjektet.

b – Argumentstreng for det andre strengobjektet.

equals()-metodens returtyper

  • Returnerer sann hvis strengliteralene er like. Hvis du sender en nullverdi i de to argumentene, vil det også returneres sant.
  • Returnerer usann hvis strengliteralene ikke er like.

Eksempel:

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));
    }
}

Utgang:

is Guru99 equal to Guru99: true
is Guru99 equal to Guru99: true

Forklaring:

Fra dette eksemplet kan du se at utdata er en boolsk verdi på sann siden strengene som sammenlignes er like.

Metode 3: String compareTo() metode

Ocuco Java String compareTo() metoden sammenligner to strenger i alfabetisk rekkefølge. Det blir vanligvis referert til som leksikografisk rekkefølge.

Syntaks:

public int compareTo(String str)

compareTo() metodeparametere

str – Strengen som skal sammenlignes med gjeldende streng.

compareTo()-metoden returnerer

  • 0 – Returnerer null hvis det angitte objektet er lik gjeldende streng.
  • < 0 – Returnerer et tall mindre enn null hvis denne strengen er mindre enn det angitte objektet.
  • > 0 – Returnerer et tall større enn null hvis denne strengen overskrider den angitte strengen.

Eksempel:

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));
    }
}

Forventet utgang:

is Guru99 equal to Guru99: 0
is Guru99 equal to GURU99: 32

Forklaring:

Det første resultatet returnerer verdien null siden den første og andre strengen er like.

Det andre resultatet returnerer en verdi på trettito siden tegnene er forskjellige.

OBS: For å ignorere tilfellene kan du bruke "compareToIgnoreCase"-metoden.

Metode 4: StringUtils equals() metode

Ocuco Java StringUtils er lik() metoden sammenligner likheten mellom to sekvenser av tegn.

Sørg for at du har lagt til "org.apache.commons.lang3"-biblioteket i programmet ditt. Dette vil tillate deg å sammenligne strenger ved å bruke StringUtil-metodene.

For Maven-prosjekter, bruk denne veilede for å legge til biblioteket i prosjektet.

Men hvis du vil legge til biblioteket uten byggeverktøy, bruk dette veilede.

Syntaks:

public static boolean equals(CharSequnce cs1, CharSequence cs2)

StringUtils equals() metodeparametere

  • cs1 – En sekvens av tegn for det første argumentet.
  • cs2 – En sekvens av tegn for det andre argumentet.

StringUtils equals()-metoden returnerer

  • Returnerer sann hvis strengsammenligningen er lik. Det gjelder hvis du sender en nullverdi i de to argumentene.
  • Returnerer usann hvis strengsammenligningen ikke er lik.

Eksempel:

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));
    }
}

Utgang:

is Guru99 equal to Guru99: true
is Guru99 equal to GURU99: false

Forklaring:

Siden innholdet i den første og andre strengen er like, returnerer resultatet sant.

Du kan bruke «equalsIgnoreCase»-metoden for å ignorere saken.

Metode 5: StringUtils equalsAny() metode

Ocuco Java StringUtils equalsAny() metoden sjekker om det finnes en streng i argumentene.

Syntaks:

public static boolean equalsAny(CharSequence string, Charsequence… searchStrings)

StringUtils equalsAny() metodeparametere

  • streng – strengverdien for det første argumentet. Argumentet kan også ha en nullverdi.
  • searchStrings – Et sett med strengargumenter for metoden for å finne om den første argumentstrengen er til stede.

StringUtils equalsAny()-metoden returnerer

  • Returnerer sann hvis strengen som skal samsvare finnes i variabelt antall søkestrenger. Dette gjelder hvis begge argumentene er null.
  • Returnerer usann hvis strengen som skal samsvare ikke samsvarer med noen streng i variabelt antall søkestrenger.

Eksempel:

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));
    }
}

Utgang:

is Guru99 available: true
is GURU99 available: false

Forklaring:

Siden innholdet i den første strengen og den andre strengen er like, returnerer resultatet sant. Du kan bruke «equalsAnyIgnoreCase»-metoden for å ignorere saken.

Metode 6: Bruke == operator

Operatoren == på strenger sjekker om objektreferanser har samme adresse.

Eksempel:

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));
    }
}

Forventet utgang:

is Guru99 == to Guru99: true
is Guru99 == to GURU99: false

Forklaring:

  • Det første resultatet returnerer en boolsk verdi på sann. Strenger med samme innhold legges til i samme strengpool, og derfor deler strengen én adresse.
  • Det andre resultatet returnerer en boolsk verdi på false. Objektene har forskjellig innhold, noe som resulterer i andre strengpooler. Dette betyr at strengene har separate objektreferanser; dermed utgangen er falsk.

Metode 7: Opprette en egendefinert metode for å sammenligne to strenger i Java

Lag en metode som sammenligner to strenger ved å bruke leksikografisk rekkefølge.

Syntaks:

public static int compareTwoStrings(String str1, String str2)

Egendefinerte metodeparametere

  • str1 – Strengen som skal sammenlignes.
  • str2 – Strengen å sammenligne mot.

Egendefinert metode returnerer

  • 0 – Returnerer null hvis den første strengen er lik den andre strengen.
  • < 0 – Returnerer et tall mindre enn null hvis den første strengen er mindre enn den andre strengen.
  • > 0 – Returnerer et tall større enn null hvis den første strengen er større enn den andre strengen.

Eksempel:

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));
    }
}

Forventet utgang:

is Guru99 equal to Guru99: 0

Forklaring:

Resultatet returnerte en verdi på null, noe som betyr at den tilpassede funksjonen fungerer som forventet.

Sammendrag:

Ocuco Java sammenligne to strenger metode for å bruke avhenger av følgende faktorer.

  • Ønske om å ha kontroll over metoden din. I dette tilfellet oppretter du en egendefinert metode.
  • Du kan ikke bruke eldre kode. med Java 6 og lavere.
  • Metoden som har optimal ytelse.
  • Typen data du jobber med. For eksempel å matche en streng fra et sett med variable argumenter.
  • Funksjonene som tilbys av det outsourcede biblioteket. For eksempel tilbyr StringUtils-biblioteket forskjellige metoder for å sammenligne strenger.