Hoe twee snaren te vergelijken in Java
Methoden om strings te vergelijken in Java
Java biedt verschillende methoden die u kunt gebruiken om twee strings te vergelijken Java. Stringvergelijking in Java is een functie die een reeks tekens aan een tekenreeks koppelt.
Om te leren hoe u tekenreeksen kunt vergelijken in Java, kunt u de methoden gebruiken die door de volgende klassen worden geboden.
- String-klasse uit de Java.lang-pakket.
- Objectenklasse uit de Java.util-pakket.
- StringUtils-klasse uit het pakket org.apache.commons.lang3.
De meeste van deze Java vergelijk strings methoden hebben oplossingen voor het negeren van de hoofdlettergebruik. Hierin Java In deze tutorial leert u de verschillende methoden die u kunt gebruiken om twee strings te vergelijken.
Methode 1: String equals()-methode
De Java Draad gelijk aan() methode vergelijkt twee tekenreeksobjecten op gelijke tekenreekswaarden.
Syntax:
public boolean equals(Object anObject)
equals() methodeparameters:
anObject โ De argumentreeks voor het vergelijken van tekenreeksen.
equals() methode retourneert typen
- Retourneert waar als de opgegeven letterlijke tekenreeks hetzelfde is als de eerste tekenreeks.
- Retourneert false als de eerste tekenreeks niet hetzelfde is als de argumentreeks.
Voorbeeld:
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));
}
}
Verwachte resultaten:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Uitleg:
- U kreeg false in de laatste uitvoer omdat het opgegeven object een ander hoofdlettergebruik heeft.
Note: Gebruik de string equals-methode voor hoofdlettergevoelige stringvergelijking. Gebruik de methode โequalsIgnoreCaseโ om tekenreeksobjecten met verschillende tekenreekswaarden te vergelijken.
Methode 2: Objecten is gelijk aan() methode
De Java Objecten is gelijk aan() De methode vergelijkt twee tekenreeksobjecten om te bepalen of ze dezelfde waarden hebben.
Syntax:
public static boolean equals(Object a, Object b)
equals() methodeparameters
a โ Argumenttekenreeks voor het eerste tekenreeksobject.
b โ Argumenttekenreeks voor het tweede tekenreeksobject.
equals() methode retourneert typen
- Retourneert waar als de letterlijke tekenreeksen gelijk zijn. Het doorgeven van een nulwaarde in de twee argumenten zal ook waar retourneren.
- Retourneert false als de letterlijke tekenreeksen niet gelijk zijn.
Voorbeeld:
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
Uitleg:
Uit dit voorbeeld kunt u zien dat de uitvoer de Booleaanse waarde true is, omdat de vergeleken tekenreeksen gelijk zijn.
Methode 3: String CompareTo()-methode
De Java Tekenreeks vergelijkTo() methode vergelijkt twee strings in alfabetische volgorde. Het wordt meestal lexicografische volgorde genoemd.
Syntax:
public int compareTo(String str)
CompareTo()-methodeparameters
str โ De tekenreeks die moet worden vergeleken met de huidige tekenreeks.
De methode CompareTo() retourneert
- 0 โ Retourneert nul als het opgegeven object gelijk is aan de huidige tekenreeks.
- < 0 โ Retourneert een getal kleiner dan nul als deze tekenreeks kleiner is dan het opgegeven object.
- > 0 โ Retourneert een getal groter dan nul als deze tekenreeks de opgegeven tekenreeks overschrijdt.
Voorbeeld:
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));
}
}
Verwachte resultaten:
is Guru99 equal to Guru99: 0 is Guru99 equal to GURU99: 32
Uitleg:
Het eerste resultaat retourneert de waarde nul, omdat de eerste en tweede tekenreeks gelijk zijn.
Het tweede resultaat retourneert een waarde van tweeรซndertig omdat de tekens verschillend zijn.
Let op: Om de cases te negeren, kunt u de โcompareToIgnoreCaseโ -methode gebruiken.
Methode 4: StringUtils is gelijk aan() methode
De Java StringUtils is gelijk aan() methode vergelijkt de gelijkheid van twee reeksen tekens.
Zorg ervoor dat u de bibliotheek โorg.apache.commons.lang3โ aan uw programma hebt toegevoegd. Hiermee kunt u tekenreeksen vergelijken met behulp van de StringUtil-methoden.
Gebruik dit voor Maven-projecten gids om de bibliotheek aan het project toe te voegen.
Als u de bibliotheek echter zonder bouwtools wilt toevoegen, gebruikt u dit gids.
Syntax:
public static boolean equals(CharSequnce cs1, CharSequence cs2)
StringUtils equals() methodeparameters
- cs1 โ Een reeks tekens voor het eerste argument.
- cs2 โ Een reeks tekens voor het tweede argument.
De methode StringUtils equals() retourneert
- Retourneert waar als de tekenreeksvergelijking gelijk is. Dit is van toepassing als u een nulwaarde in de twee argumenten doorgeeft.
- Retourneert false als de tekenreeksvergelijking niet gelijk is.
Voorbeeld:
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
Uitleg:
Omdat de inhoud van de eerste en tweede tekenreeks gelijk zijn, retourneert het resultaat waar.
U kunt de methode โequalsIgnoreCaseโ gebruiken om de hoofdlettergebruik te negeren.
Methode 5: StringUtils equalsAny()-methode
De Java StringUtils is gelijk aanAny() methode controleert of er een string in de argumenten voorkomt.
Syntax:
public static boolean equalsAny(CharSequence string, Charsequenceโฆ searchStrings)
StringUtils equalsAny()-methodeparameters
- string โ De tekenreekswaarde voor het eerste argument. Het argument kan ook een nulwaarde hebben.
- searchStrings โ Een set tekenreeksargumenten voor de methode om te bepalen of de eerste argumentreeks aanwezig is.
De methode StringUtils equalsAny() retourneert
- Retourneert waar als de overeenkomende tekenreeks bestaat in het variabele aantal zoekreeksen. Dit is van toepassing als beide argumenten nul zijn.
- Retourneert false als de overeenkomende tekenreeks met geen enkele tekenreeks in het variabele aantal zoekreeksen overeenkomt.
Voorbeeld:
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
Uitleg:
Omdat de inhoud van de eerste tekenreeks en de tweede tekenreeks gelijk zijn, retourneert het resultaat waar. U kunt de methode โequalsAnyIgnoreCaseโ gebruiken om de hoofdlettergebruik te negeren.
Methode 6: De operator == gebruiken
De operator == in strings controleert of objectverwijzingen hetzelfde adres hebben.
Voorbeeld:
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));
}
}
Verwachte resultaten:
is Guru99 == to Guru99: true is Guru99 == to GURU99: false
Uitleg:
- Het eerste resultaat retourneert de Booleaanse waarde true. Tekenreeksen met dezelfde inhoud worden toegevoegd aan dezelfde tekenreekspool, waardoor de tekenreeks รฉรฉn adres deelt.
- Het tweede resultaat retourneert de Booleaanse waarde false. De objecten hebben verschillende inhoud, wat resulteert in andere stringpools. Dit betekent dat de strings afzonderlijke objectreferenties hebben; dus de uitvoer is vals.
Methode 7: Een aangepaste methode maken om twee strings te vergelijken Java
Maak een methode die twee strings vergelijkt op basis van lexicografische volgorde.
Syntax:
public static int compareTwoStrings(String str1, String str2)
Aangepaste methodeparameters
- str1 โ De tekenreeks die moet worden vergeleken.
- str2 โ De tekenreeks waarmee u wilt vergelijken.
Aangepaste methode retourneert
- 0 โ Retourneert nul als de eerste tekenreeks gelijk is aan de tweede tekenreeks.
- < 0 โ Retourneert een getal kleiner dan nul als de eerste tekenreeks kleiner is dan de tweede tekenreeks.
- > 0 โ Retourneert een getal groter dan nul als de eerste tekenreeks groter is dan de tweede tekenreeks.
Voorbeeld:
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));
}
}
Verwachte resultaten:
is Guru99 equal to Guru99: 0
Uitleg:
Het resultaat retourneerde de waarde nul, wat betekent dat de aangepaste functie werkt zoals verwacht.
Overzicht:
De Java Welke methode u gebruikt om twee strings te vergelijken, hangt af van de volgende factoren.
- Verlangen naar controle over jouw werkwijze. Maak in dit geval een aangepaste methode.
- U kunt geen verouderde code gebruiken. met Java 6 en lager.
- De methode die optimale prestaties levert.
- Het type gegevens waarmee u werkt. Bijvoorbeeld het matchen van een tekenreeks uit een reeks variabeleargumenten.
- De functies van de uitbestede bibliotheek. De StringUtils-bibliotheek biedt bijvoorbeeld verschillende methoden om tekenreeksen te vergelijken.
