Πώς να συγκρίνετε δύο συμβολοσειρές σε Java

Μέθοδοι σύγκρισης συμβολοσειρών σε Java

Java παρέχει διαφορετικές μεθόδους που μπορείτε να αξιοποιήσετε για να συγκρίνετε δύο συμβολοσειρές Java. Σύγκριση χορδών σε Java είναι ένα χαρακτηριστικό που αντιστοιχίζει μια ακολουθία χαρακτήρων σε μια συμβολοσειρά.

Για να μάθετε πώς να συγκρίνετε χορδές σε Java, μπορείτε να χρησιμοποιήσετε τις μεθόδους που παρέχονται από τις ακόλουθες κλάσεις.

  • Κατηγορία χορδών από το Java.lang πακέτο.
  • Κλάση αντικειμένων από το Java.πακέτο χρησιμότητας.
  • Κλάση StringUtils από το πακέτο org.apache.commons.lang3.

Τα περισσότερα από αυτά Java Οι μέθοδοι σύγκρισης συμβολοσειρών έχουν λύσεις για την παράβλεψη της υπόθεσης. Σε αυτό Java σεμινάριο, θα μάθετε τις διαφορετικές μεθόδους που μπορείτε να χρησιμοποιήσετε για να συγκρίνετε δύο συμβολοσειρές.

Μέθοδος 1: Μέθοδος String equals().

Τα Διαχωριστικά Java Σπάγγος μέθοδος equals(). συγκρίνει δύο αντικείμενα συμβολοσειράς για ίσες τιμές συμβολοσειράς.

Σύνταξη:

public boolean equals(Object anObject)

παράμετροι μεθόδου equals():

anObject – Η συμβολοσειρά ορίσματος για τη σύγκριση συμβολοσειρών.

τύπους επιστροφής μεθόδου equals().

  • Επιστρέφει true αν η κυριολεκτική συμβολοσειρά που παρέχεται είναι ίδια με την πρώτη συμβολοσειρά.
  • Επιστρέφει το false εάν η πρώτη συμβολοσειρά δεν είναι ίδια με τη συμβολοσειρά ορίσματος.

Παράδειγμα:

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

Αναμενόμενη παραγωγή:

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

Επεξήγηση:

  • Λάβατε false στην τελευταία έξοδο επειδή το καθορισμένο αντικείμενο έχει διαφορετική περίπτωση.

Σημείωση: Χρησιμοποιήστε τη μέθοδο ίσον συμβολοσειράς για σύγκριση συμβολοσειρών με διάκριση πεζών-κεφαλαίων. Χρησιμοποιήστε τη μέθοδο "equalsIgnoreCase" για να συγκρίνετε αντικείμενα συμβολοσειράς με διαφορετικές τιμές συμβολοσειρών.

Μέθοδος 2: Μέθοδος Objects equals().

Τα Διαχωριστικά Java Αντικείμενα ίσον() μέθοδος συγκρίνει δύο αντικείμενα συμβολοσειρών για να βρει αν έχουν τις ίδιες τιμές.

Σύνταξη:

public static boolean equals(Object a, Object b)

τις παραμέτρους της μεθόδου equals().

a – Συμβολοσειρά ορίσματος για το αντικείμενο πρώτης συμβολοσειράς.

β – Συμβολοσειρά ορίσματος για το αντικείμενο δεύτερης συμβολοσειράς.

τύπους επιστροφής μεθόδου equals().

  • Επιστρέφει true αν τα κυριολεκτικά της συμβολοσειράς είναι ίσα. Η μετάδοση μιας μηδενικής τιμής στα δύο ορίσματα θα επιστρέψει επίσης true.
  • Επιστρέφει το false αν τα γράμματα της συμβολοσειράς δεν είναι ίσα.

Παράδειγμα:

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

Παραγωγή:

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

Επεξήγηση:

Από αυτό το παράδειγμα, μπορείτε να δείτε ότι η έξοδος είναι μια δυαδική τιμή αληθούς, καθώς οι συγκρίσιμες συμβολοσειρές είναι ίσες.

Μέθοδος 3: Μέθοδος string compareTo().

Τα Διαχωριστικά Java Συμβολοσειρά compareTo() μέθοδος συγκρίνει δύο συμβολοσειρές με αλφαβητική σειρά. Συνήθως αναφέρεται ως λεξικογραφική σειρά.

Σύνταξη:

public int compareTo(String str)

παραμέτρους της μεθόδου compareTo().

str – Η συμβολοσειρά για σύγκριση με την τρέχουσα συμβολοσειρά.

επιστρέφει η μέθοδος compareTo().

  • 0 – Επιστρέφει μηδέν εάν το καθορισμένο αντικείμενο είναι ίσο με την τρέχουσα συμβολοσειρά.
  • < 0 – Επιστρέφει έναν αριθμό μικρότερο από το μηδέν εάν αυτή η συμβολοσειρά είναι μικρότερη από το καθορισμένο αντικείμενο.
  • > 0 – Επιστρέφει έναν αριθμό μεγαλύτερο από το μηδέν εάν αυτή η συμβολοσειρά υπερβαίνει την παρεχόμενη συμβολοσειρά.

Παράδειγμα:

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

Αναμενόμενη παραγωγή:

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

Επεξήγηση:

Το πρώτο αποτέλεσμα επιστρέφει μια τιμή μηδέν αφού η πρώτη και η δεύτερη συμβολοσειρά είναι ίσες.

Το δεύτερο αποτέλεσμα επιστρέφει μια τιμή τριάντα δύο αφού οι χαρακτήρες είναι διαφορετικοί.

Σημείωση: Για να αγνοήσετε τις περιπτώσεις, μπορείτε να χρησιμοποιήσετε τη μέθοδο "compareToIgnoreCase".

Μέθοδος 4: Μέθοδος StringUtils equals().

Τα Διαχωριστικά Java StringUtils ίσον() μέθοδος συγκρίνει την ισότητα δύο ακολουθιών χαρακτήρων.

Βεβαιωθείτε ότι έχετε προσθέσει τη βιβλιοθήκη "org.apache.commons.lang3" στο πρόγραμμά σας. Αυτό θα σας επιτρέψει να συγκρίνετε συμβολοσειρές χρησιμοποιώντας τις μεθόδους StringUtil.

Για έργα Maven, χρησιμοποιήστε αυτό καθοδηγήσει για να προσθέσετε τη βιβλιοθήκη στο έργο.

Ωστόσο, εάν θέλετε να προσθέσετε τη βιβλιοθήκη χωρίς εργαλεία κατασκευής, χρησιμοποιήστε αυτό καθοδηγήσει.

Σύνταξη:

public static boolean equals(CharSequnce cs1, CharSequence cs2)

StringUtils ισοδυναμεί με παραμέτρους μεθόδου

  • cs1 – Μια ακολουθία χαρακτήρων για το πρώτο όρισμα.
  • cs2 – Μια ακολουθία χαρακτήρων για το δεύτερο όρισμα.

Η μέθοδος StringUtils equals() επιστρέφει

  • Επιστρέφει true εάν η σύγκριση συμβολοσειρών είναι ίση. Ισχύει εάν μεταβιβάσετε μια μηδενική τιμή στα δύο ορίσματα.
  • Επιστρέφει το false εάν η σύγκριση συμβολοσειρών δεν είναι ίση.

Παράδειγμα:

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

Παραγωγή:

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

Επεξήγηση:

Εφόσον τα περιεχόμενα της πρώτης και της δεύτερης συμβολοσειράς είναι ίσα, το αποτέλεσμα επιστρέφει true.

Μπορείτε να χρησιμοποιήσετε τη μέθοδο "equalsIgnoreCase" για να αγνοήσετε την περίπτωση.

Μέθοδος 5: Μέθοδος StringUtils equalsAny().

Τα Διαχωριστικά Java StringUtils ίσονAny() Η μέθοδος ελέγχει εάν υπάρχει μια συμβολοσειρά στα ορίσματα.

Σύνταξη:

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

StringUtils ισοδυναμεί με παραμέτρους μεθόδου Any().

  • string – Η τιμή συμβολοσειράς για το πρώτο όρισμα. Το όρισμα μπορεί επίσης να έχει μηδενική τιμή.
  • SearchStrings – Ένα σύνολο ορισμάτων συμβολοσειράς για τη μέθοδο για να βρει εάν υπάρχει η πρώτη συμβολοσειρά ορίσματος.

Η μέθοδος StringUtils equalsAny() επιστρέφει

  • Επιστρέφει true εάν η συμβολοσειρά που ταιριάζει υπάρχει στη μεταβλητή αριθμός των συμβολοσειρών αναζήτησης. Αυτό ισχύει εάν και τα δύο ορίσματα είναι μηδενικά.
  • Επιστρέφει το false εάν η συμβολοσειρά που ταιριάζει δεν ταιριάζει με καμία συμβολοσειρά στον μεταβλητό αριθμό των συμβολοσειρών αναζήτησης.

Παράδειγμα:

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

Παραγωγή:

is Guru99 available: true
is GURU99 available: false

Επεξήγηση:

Εφόσον τα περιεχόμενα της πρώτης συμβολοσειράς και της δεύτερης συμβολοσειράς είναι ίσα, το αποτέλεσμα επιστρέφει true. Μπορείτε να χρησιμοποιήσετε τη μέθοδο "equalsAnyIgnoreCase" για να αγνοήσετε την περίπτωση.

Μέθοδος 6: Χρήση τελεστή ==

Ο τελεστής == στις συμβολοσειρές ελέγχει εάν οι αναφορές αντικειμένων έχουν την ίδια διεύθυνση.

Παράδειγμα:

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

Αναμενόμενη παραγωγή:

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

Επεξήγηση:

  • Το πρώτο αποτέλεσμα επιστρέφει μια boolean τιμή true. Οι συμβολοσειρές με τα ίδια περιεχόμενα προστίθενται στην ίδια ομάδα συμβολοσειρών, επομένως η συμβολοσειρά μοιράζεται μία διεύθυνση.
  • Το δεύτερο αποτέλεσμα επιστρέφει μια boolean τιμή false. Τα αντικείμενα έχουν διαφορετικά περιεχόμενα, τα οποία καταλήγουν σε άλλες ομάδες συμβολοσειρών. Αυτό σημαίνει ότι οι συμβολοσειρές έχουν ξεχωριστές αναφορές αντικειμένων. άρα η έξοδος είναι ψευδής.

Μέθοδος 7: Δημιουργία προσαρμοσμένης μεθόδου σύγκρισης δύο συμβολοσειρών Java

Δημιουργήστε μια μέθοδο που συγκρίνει δύο συμβολοσειρές χρησιμοποιώντας λεξικογραφική σειρά.

Σύνταξη:

public static int compareTwoStrings(String str1, String str2)

Προσαρμοσμένες παράμετροι μεθόδου

  • str1 – Η συμβολοσειρά προς σύγκριση.
  • str2 – Η συμβολοσειρά προς σύγκριση.

Η προσαρμοσμένη μέθοδος επιστρέφει

  • 0 – Επιστρέφει μηδέν εάν η πρώτη συμβολοσειρά είναι ίση με τη δεύτερη συμβολοσειρά.
  • < 0 – Επιστρέφει έναν αριθμό μικρότερο από το μηδέν εάν η πρώτη συμβολοσειρά είναι μικρότερη από τη δεύτερη συμβολοσειρά.
  • > 0 – Επιστρέφει έναν αριθμό μεγαλύτερο από το μηδέν εάν η πρώτη συμβολοσειρά είναι μεγαλύτερη από τη δεύτερη συμβολοσειρά.

Παράδειγμα:

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

Αναμενόμενη παραγωγή:

is Guru99 equal to Guru99: 0

Επεξήγηση:

Το αποτέλεσμα επέστρεψε μια τιμή μηδέν, που σημαίνει ότι η προσαρμοσμένη συνάρτηση λειτουργεί όπως αναμένεται.

Περίληψη:

Τα Διαχωριστικά Java Η μέθοδος σύγκρισης δύο χορδών εξαρτάται από τους ακόλουθους παράγοντες.

  • Επιθυμία να έχετε τον έλεγχο της μεθόδου σας. Σε αυτήν την περίπτωση, δημιουργήστε μια προσαρμοσμένη μέθοδο.
  • Δεν μπορείτε να χρησιμοποιήσετε κωδικό παλαιού τύπου. με Java 6 και κάτω.
  • Η μέθοδος που έχει βέλτιστη απόδοση.
  • Το είδος των δεδομένων με τα οποία εργάζεστε. Για παράδειγμα, αντιστοίχιση μιας συμβολοσειράς από ένα σύνολο μεταβλητών ορισμάτων.
  • Τα χαρακτηριστικά που παρέχονται από την εξωτερική βιβλιοθήκη. Για παράδειγμα, η βιβλιοθήκη StringUtils παρέχει διάφορες μεθόδους σύγκρισης συμβολοσειρών.