Sådan sammenlignes to strenge i Java

Metoder til at sammenligne strenge i Java

Java giver forskellige metoder, du kan bruge til at sammenligne to strenge i Java. Strengesammenligning i Java er en funktion, der matcher en sekvens af tegn til en streng.

For at lære at sammenligne strenge i Java, kan du bruge metoderne fra følgende klasser.

  • String klasse fra Java.lang-pakke.
  • Objektklasse fra Java.util-pakke.
  • StringUtils-klassen fra org.apache.commons.lang3-pakken.

De fleste af disse Java sammenligne strenge metoder har løsninger til at ignorere sagen. I dette Java tutorial, vil du lære de forskellige metoder, som du kan bruge til at sammenligne to strenge.

Metode 1: Streng lig med() metode

Java String equals() metode sammenligner to strengobjekter for lige store strengværdier.

Syntaks:

public boolean equals(Object anObject)

equals() metodeparametre:

anObject – Argumentstrengen til sammenligning af strenge.

equals() metode returtyper

  • Returnerer sand, hvis den angivne strengliteral er den samme som den første streng.
  • Returnerer falsk, hvis den første streng 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 output:

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

Forklaring:

  • Du fik falsk i det sidste output, fordi det angivne objekt har en anden store og små bogstaver.

Bemærk: Brug strengen er lig-metoden til sammenligning af tekstfølsomme strenge. Brug metoden "equalsIgnoreCase" til at sammenligne strengobjekter med forskellige strengværdier.

Metode 2: Objekter er lig med() metode

Java Objekter er lig med() metoden sammenligner to strengobjekter for at finde ud af, om de har de samme værdier.

Syntaks:

public static boolean equals(Object a, Object b)

equals() metodeparametre

a – Argumentstreng for det første strengobjekt.

b – Argumentstreng for det andet strengobjekt.

equals() metode returtyper

  • Returnerer sand, hvis strengens literaler er ens. Hvis du sender en nulværdi i de to argumenter, vil det også returnere sand.
  • Returnerer falsk, hvis strengens literaler ikke er ens.

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

Output:

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

Forklaring:

Fra dette eksempel kan du se, at outputtet er en boolsk værdi af sand, da de sammenlignede strenge er ens.

Metode 3: String compareTo() metode

Java String compareTo() metoden sammenligner to strenge i alfabetisk rækkefølge. Det omtales normalt som leksikografisk orden.

Syntaks:

public int compareTo(String str)

compareTo() metodeparametre

str – Den streng, der skal sammenlignes med den aktuelle streng.

compareTo() metoden returnerer

  • 0 – Returnerer nul, hvis det angivne objekt er lig med den aktuelle streng.
  • < 0 – Returnerer et tal mindre end nul, hvis denne streng er mindre end det angivne objekt.
  • > 0 – Returnerer et tal større end nul, hvis denne streng overstiger den angivne streng.

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 output:

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

Forklaring:

Det første resultat returnerer en værdi på nul, da den første og anden streng er ens.

Det andet resultat returnerer en værdi på toogtredive, da tegnene er forskellige.

Bemærk: For at ignorere sagerne kan du bruge "compareToIgnoreCase" metoden.

Metode 4: StringUtils equals() metode

Java StringUtils er lig med() metoden sammenligner ligheden mellem to sekvenser af tegn.

Sørg for, at du har tilføjet "org.apache.commons.lang3"-biblioteket i dit program. Dette giver dig mulighed for at sammenligne strenge ved hjælp af StringUtil-metoderne.

Brug dette til Maven-projekter vejlede at tilføje biblioteket til projektet.

Men hvis du vil tilføje biblioteket uden byggeværktøjer, skal du bruge dette vejlede.

Syntaks:

public static boolean equals(CharSequnce cs1, CharSequence cs2)

StringUtils equals() metodeparametre

  • cs1 – En sekvens af tegn til det første argument.
  • cs2 – En sekvens af tegn til det andet argument.

StringUtils equals() metode returnerer

  • Returnerer sand, hvis strengsammenligningen er ens. Det gælder, hvis du sender en nulværdi i de to argumenter.
  • Returnerer falsk, hvis strengsammenligningen ikke er ens.

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

Output:

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

Forklaring:

Da indholdet af den første og anden streng er ens, returnerer resultatet sandt.

Du kan bruge metoden "equalsIgnoreCase" til at ignorere sagen.

Metode 5: StringUtils equalsAny() metode

Java StringUtils equalsAny() metoden kontrollerer, om der findes en streng i argumenterne.

Syntaks:

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

StringUtils equalsAny() metodeparametre

  • streng – strengværdien for det første argument. Argumentet kan også have en nulværdi.
  • searchStrings – Et sæt strengargumenter for metoden til at finde, om den første argumentstreng er til stede.

StringUtils equalsAny() metode returnerer

  • Returnerer sand, hvis den streng, der skal matches, findes i det variable antal søgestrenge. Dette gælder, hvis begge argumenter er nul.
  • Returnerer falsk, hvis den streng, der skal matches, ikke matcher nogen streng i det variable antal søgestrenge.

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

Output:

is Guru99 available: true
is GURU99 available: false

Forklaring:

Da indholdet af den første streng og den anden streng er ens, returnerer resultatet sandt. Du kan bruge metoden "equalsAnyIgnoreCase" til at ignorere sagen.

Metode 6: Brug af == operator

Operatoren == på strenge kontrollerer, om objektreferencer 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 output:

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

Forklaring:

  • Det første resultat returnerer en boolsk værdi på sand. Strenge med det samme indhold føjes til den samme strengpulje, og derfor deler strengen én adresse.
  • Det andet resultat returnerer en boolsk værdi på false. Objekterne har forskelligt indhold, hvilket resulterer i andre strengpuljer. Det betyder, at strengene har separate objektreferencer; outputtet er således falsk.

Metode 7: Oprettelse af en brugerdefineret metode til at sammenligne to strenge i Java

Opret en metode, der sammenligner to strenge ved hjælp af leksikografisk rækkefølge.

Syntaks:

public static int compareTwoStrings(String str1, String str2)

Brugerdefinerede metodeparametre

  • str1 – Strengen der skal sammenlignes.
  • str2 – Den streng, der skal sammenlignes med.

Tilpasset metode returnerer

  • 0 – Returnerer nul, hvis den første streng er lig med den anden streng.
  • < 0 – Returnerer et tal mindre end nul, hvis den første streng er mindre end den anden streng.
  • > 0 – Returnerer et tal større end nul, hvis den første streng er større end den anden streng.

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 output:

is Guru99 equal to Guru99: 0

Forklaring:

Resultatet returnerede en værdi på nul, hvilket betyder, at den brugerdefinerede funktion fungerer som forventet.

Sammendrag:

Java sammenligne to strenge metode til at bruge afhænger af følgende faktorer.

  • Ønske om at have kontrol over din metode. I dette tilfælde skal du oprette en brugerdefineret metode.
  • Du kan ikke bruge ældre kode. med Java 6 og lavere.
  • Metoden, der har optimal ydeevne.
  • Den type data, du arbejder med. For eksempel at matche en streng fra et sæt variable argumenter.
  • Funktionerne leveret af det outsourcede bibliotek. For eksempel tilbyder StringUtils-biblioteket forskellige metoder til at sammenligne strenge.