Hur man jämför två strängar i Java
Metoder för att jämföra strängar i Java
Java ger olika metoder som du kan använda för att jämföra två strängar i Java. Strängjämförelse i Java är en funktion som matchar en sekvens av tecken till en sträng.
För att lära dig hur man jämför strängar i Java, kan du använda metoderna som tillhandahålls av följande klasser.
- Strängklass från Java.lang-paket.
- Objektklass från Java.util-paketet.
- StringUtils-klassen från org.apache.commons.lang3-paketet.
De flesta av dessa Java jämför strängmetoder har lösningar för att ignorera fallet. I detta Java tutorial kommer du att lära dig de olika metoderna som du kan använda för att jämföra två strängar.
Metod 1: String equals()-metoden
Smakämnen Java Sträng metoden equals(). jämför två strängobjekt för lika strängvärden.
Syntax:
public boolean equals(Object anObject)
equals() metodparametrar:
anObject – Argumentsträngen för att jämföra strängar.
return typer av metoden equals().
- Returnerar sant om den angivna strängen är densamma som den första strängen.
- Returnerar false om den första strängen inte är densamma som argumentsträngen.
Exempelvis:
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)); } }
Förväntad produktion:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Förklaring:
- Du fick false i den senaste utgången eftersom det angivna objektet har ett annat skiftläge.
Anmärkningar: Använd metoden string equals för skiftlägeskänslig strängjämförelse. Använd metoden "equalsIgnoreCase" för att jämföra strängobjekt med olika strängvärden.
Metod 2: Metoden Objects equals()
Smakämnen Java Objekt är lika med() metod jämför två strängobjekt för att hitta om de har samma värden.
Syntax:
public static boolean equals(Object a, Object b)
equals() metodparametrar
a – Argumentsträng för det första strängobjektet.
b – Argumentsträng för det andra strängobjektet.
return typer av metoden equals().
- Returnerar sant om strängliteralerna är lika. Om du skickar ett nollvärde i de två argumenten returneras också sant.
- Returnerar falskt om strängliteralerna inte är lika.
Exempelvis:
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)); } }
Produktion:
is Guru99 equal to Guru99: true is Guru99 equal to Guru99: true
Förklaring:
Från det här exemplet kan du se att utdata är ett booleskt värde på sant eftersom strängarna som jämförs är lika.
Metod 3: String compareTo()-metoden
Smakämnen Java String compareTo() metoden jämför två strängar i alfabetisk ordning. Det brukar kallas lexikografisk ordning.
Syntax:
public int compareTo(String str)
compareTo() metodparametrar
str – Strängen som ska jämföras med den aktuella strängen.
compareTo()-metoden returnerar
- 0 – Returnerar noll om det angivna objektet är lika med den aktuella strängen.
- < 0 – Returnerar ett tal mindre än noll om denna sträng är mindre än det angivna objektet.
- > 0 – Returnerar ett tal större än noll om denna sträng överskrider den angivna strängen.
Exempelvis:
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)); } }
Förväntad produktion:
is Guru99 equal to Guru99: 0 is Guru99 equal to GURU99: 32
Förklaring:
Det första resultatet returnerar värdet noll eftersom den första och andra strängen är lika.
Det andra resultatet returnerar ett värde på trettiotvå eftersom tecknen är olika.
Notera: För att ignorera fallen kan du använda metoden "compareToIgnoreCase".
Metod 4: StringUtils equals() metod
Smakämnen Java StringUtils är lika med() metoden jämför likheten mellan två teckensekvenser.
Se till att du har lagt till "org.apache.commons.lang3"-biblioteket i ditt program. Detta gör att du kan jämföra strängar med StringUtil-metoderna.
För Maven-projekt, använd detta styra för att lägga till biblioteket i projektet.
Men om du vill lägga till biblioteket utan några byggverktyg, använd detta styra.
Syntax:
public static boolean equals(CharSequnce cs1, CharSequence cs2)
StringUtils equals() metodparametrar
- cs1 – En sekvens av tecken för det första argumentet.
- cs2 – En sekvens av tecken för det andra argumentet.
StringUtils equals()-metoden returnerar
- Returnerar sant om strängjämförelsen är lika. Det gäller om du skickar ett nollvärde i de två argumenten.
- Returnerar falskt om strängjämförelsen inte är lika.
Exempelvis:
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)); } }
Produktion:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Förklaring:
Eftersom innehållet i den första och andra strängen är lika, returnerar resultatet sant.
Du kan använda metoden "equalsIgnoreCase" för att ignorera fallet.
Metod 5: StringUtils equalsAny() metod
Smakämnen Java StringUtils equalsAny() metod kontrollerar om det finns en sträng i argumenten.
Syntax:
public static boolean equalsAny(CharSequence string, Charsequence… searchStrings)
StringUtils equalsAny() metodparametrar
- string – Strängvärdet för det första argumentet. Argumentet kan också ha ett nollvärde.
- searchStrings – En uppsättning strängargument för metoden för att hitta om den första argumentsträngen finns.
StringUtils equalsAny()-metoden returnerar
- Returnerar sant om strängen som ska matchas finns i det variabla antalet söksträngar. Detta gäller om båda argumenten är null.
- Returnerar false om strängen som ska matchas inte matchar någon sträng i det variabla antalet söksträngar.
Exempelvis:
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)); } }
Produktion:
is Guru99 available: true is GURU99 available: false
Förklaring:
Eftersom innehållet i den första strängen och den andra strängen är lika, returnerar resultatet sant. Du kan använda metoden "equalsAnyIgnoreCase" för att ignorera fallet.
Metod 6: Använd operatorn ==
Operatorn == på strängar kontrollerar om objektreferenser har samma adress.
Exempelvis:
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)); } }
Förväntad produktion:
is Guru99 == to Guru99: true is Guru99 == to GURU99: false
Förklaring:
- Det första resultatet returnerar ett booleskt värde på sant. Strängar med samma innehåll läggs till i samma strängpool och därför delar strängen en adress.
- Det andra resultatet returnerar ett booleskt värde på false. Objekten har olika innehåll, vilket resulterar i andra strängpooler. Det betyder att strängarna har separata objektreferenser; sålunda är utgången falsk.
Metod 7: Skapa en anpassad metod för att jämföra två strängar i Java
Skapa en metod som jämför två strängar med hjälp av lexikografisk ordning.
Syntax:
public static int compareTwoStrings(String str1, String str2)
Anpassade metodparametrar
- str1 – Strängen att jämföra.
- str2 – Strängen att jämföra mot.
Anpassad metod returnerar
- 0 – Returnerar noll om den första strängen är lika med den andra strängen.
- < 0 – Returnerar ett tal mindre än noll om den första strängen är mindre än den andra strängen.
- > 0 – Returnerar ett tal större än noll om den första strängen är större än den andra strängen.
Exempelvis:
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)); } }
Förväntad produktion:
is Guru99 equal to Guru99: 0
Förklaring:
Resultatet returnerade värdet noll, vilket betyder att den anpassade funktionen fungerar som förväntat.
Sammanfattning:
Smakämnen Java jämför två strängar metoden att använda beror på följande faktorer.
- Önskan att ha kontroll över din metod. Skapa i det här fallet en anpassad metod.
- Du kan inte använda äldre kod. med Java 6 och lägre.
- Metoden som har optimal prestanda.
- Den typ av data du arbetar med. Till exempel matcha en sträng från en uppsättning variabla argument.
- Funktionerna som tillhandahålls av det utlagda biblioteket. Till exempel erbjuder StringUtils-biblioteket olika metoder för att jämföra strängar.