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.

Vat dit bericht samen met: