Πώς να συγκρίνετε δύο συμβολοσειρές σε Java
⚡ Έξυπνη Σύνοψη
Σύγκριση δύο συμβολοσειρών σε Java μπορεί να γίνει με διάφορες μεθόδους που ταιριάζουν με μια ακολουθία χαρακτήρων για ισότητα ή τάξη. Αυτός ο πόρος εξηγεί επτά προσεγγίσεις, συμπεριλαμβανομένων των μεθόδων String equals, Objects equals, compareTo, StringUtils, τον τελεστή == και μια προσαρμοσμένη μέθοδο σύγκρισης, καθεμία με παραδείγματα.

Μέθοδοι σύγκρισης συμβολοσειρών σε Java
Java παρέχει διαφορετικές μεθόδους που μπορείτε να αξιοποιήσετε για να συγκρίνετε δύο συμβολοσειρές Java. Σύγκριση χορδών σε Java είναι ένα χαρακτηριστικό που αντιστοιχίζει μια ακολουθία χαρακτήρων σε μια συμβολοσειρά.
Για να μάθετε πώς να συγκρίνετε χορδές σε Java, μπορείτε να χρησιμοποιήσετε τις μεθόδους που παρέχονται από τις ακόλουθες κλάσεις:
- Κλάση συμβολοσειράς από το πακέτο java.lang.
- Κλάση αντικειμένων από το πακέτο java.util.
- Κλάση StringUtils από το πακέτο org.apache.commons.lang3.
Τα περισσότερα από αυτά Java Οι μέθοδοι compare-strings έχουν λύσεις για την αγνόηση της πεζής ή ...
Μέθοδος 1: Μέθοδος String equals().
The 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 στην τελευταία έξοδο επειδή το καθορισμένο αντικείμενο έχει διαφορετική περίπτωση.
Σημείωση: Χρησιμοποιήστε τη μέθοδο string equals() για σύγκριση συμβολοσειρών με διάκριση πεζών-κεφαλαίων. Χρησιμοποιήστε τη μέθοδο “equalsIgnoreCase” για να συγκρίνετε αντικείμενα συμβολοσειράς αγνοώντας την πεζά-κεφαλαία.
Μέθοδος 2: Μέθοδος Objects equals().
The 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
Επεξήγηση:
Από αυτό το παράδειγμα, μπορείτε να δείτε ότι η έξοδος είναι μια λογική τιμή true, καθώς οι συμβολοσειρές που συγκρίνονται είναι ίσες.
Μέθοδος 3: Μέθοδος string compareTo().
The 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().
The Java StringUtils ίσον() μέθοδος συγκρίνει την ισότητα δύο ακολουθιών χαρακτήρων.
Βεβαιωθείτε ότι έχετε προσθέσει τη βιβλιοθήκη «org.apache.commons.lang3» στο πρόγραμμά σας. Αυτό θα σας επιτρέψει να συγκρίνετε συμβολοσειρές χρησιμοποιώντας τις μεθόδους StringUtils.
Για έργα Maven, χρησιμοποιήστε αυτό καθοδηγήσει για να προσθέσετε τη βιβλιοθήκη στο έργο.
Ωστόσο, αν θέλετε να προσθέσετε τη βιβλιοθήκη χωρίς εργαλεία δημιουργίας, χρησιμοποιήστε αυτό καθοδηγήσει.
Σύνταξη:
public static boolean equals(CharSequence cs1, CharSequence cs2)
StringUtils ισοδυναμεί με παραμέτρους μεθόδου
- cs1 – Μια ακολουθία χαρακτήρων για το πρώτο όρισμα.
- cs2 – Μια ακολουθία χαρακτήρων για το δεύτερο όρισμα.
Η μέθοδος StringUtils equals() επιστρέφει
- Επιστρέφει true εάν η σύγκριση συμβολοσειρών είναι ίση. Ισχύει επίσης εάν περάσετε μια τιμή null στα δύο ορίσματα.
- Επιστρέφει το 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().
The Java StringUtils ίσονAny() Η μέθοδος ελέγχει εάν υπάρχει μια συμβολοσειρά στα ορίσματα.
Σύνταξη:
public static boolean equalsAny(CharSequence string, CharSequence... searchStrings)
StringUtils ισοδυναμεί με παραμέτρους μεθόδου Any().
- string – Η τιμή συμβολοσειράς για το πρώτο όρισμα. Το όρισμα μπορεί επίσης να έχει μηδενική τιμή.
- SearchStrings – Ένα σύνολο ορισμάτων συμβολοσειράς για τη μέθοδο για να βρει εάν υπάρχει η πρώτη συμβολοσειρά ορίσματος.
Η μέθοδος StringUtils equalsAny() επιστρέφει
- Επιστρέφει την τιμή true εάν η συμβολοσειρά που πρέπει να αντιστοιχιστεί υπάρχει στη μεταβλητή αριθμός συμβολοσειρών αναζήτησης. Αυτό ισχύει εάν και τα δύο ορίσματα είναι null.
- Επιστρέφει το 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
Επεξήγηση:
- Το πρώτο αποτέλεσμα επιστρέφει μια λογική τιμή true. Συμβολοσειρές με το ίδιο περιεχόμενο προστίθενται στην ίδια ομάδα συμβολοσειρών, επομένως οι συμβολοσειρές μοιράζονται μία διεύθυνση.
- Το δεύτερο αποτέλεσμα επιστρέφει μια λογική τιμή false. Τα αντικείμενα έχουν διαφορετικό περιεχόμενο, το οποίο έχει ως αποτέλεσμα διαφορετικές ομάδες συμβολοσειρών. Αυτό σημαίνει ότι οι συμβολοσειρές έχουν ξεχωριστές αναφορές αντικειμένων. Επομένως, η έξοδος είναι 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
Επεξήγηση:
Το αποτέλεσμα επέστρεψε μια τιμή μηδέν, που σημαίνει ότι η προσαρμοσμένη συνάρτηση λειτουργεί όπως αναμένεται.
