Πώς να χρησιμοποιήσετε το StringBuilder της Java
Η κλάση StringBuilder της Java μπορεί να χρησιμοποιηθεί αντί των παραδοσιακών συμβολοσειρών. Σε αντίθεση με τις παραδοσιακές συμβολοσειρές, η StringBuilder σας επιτρέπει να κάνετε αλλαγές σε μια συμβολοσειρά χωρίς να δημιουργήσετε ένα νέο αντικείμενο. Οι αλλαγές μπορούν να γίνουν χρησιμοποιώντας διαφορετικές μεθόδους.
Τι είναι το StringBuilder της Java;
Η κλάση string στη Java είναι αμετάβλητη και δεν έχει υποκλάσεις. Μια εναλλακτική λύση για αυτήν την τελική κλάση είναι το StringBuilder της Java. Δημιουργεί μια ακολουθία χαρακτήρων που μπορεί να αλλάξει μετά τη δημιουργία της. Με αυτόν τον τρόπο, η StringBuilder της Java είναι παρόμοια με την StringBuffer. Οι δύο κλάσεις έχουν παρόμοιο σκοπό, αλλά σε αντίθεση με την επιλογή buffer, η StringBuilder δεν είναι συγχρονισμένη. Αυτό καθιστά την StringBuilder μια καλή επιλογή όταν εργάζεστε με μεμονωμένα threads, καθώς είναι πολύ πιο γρήγορη από την StringBuffer. Σε αυτό το σεμινάριο, θα σας παρουσιάσουμε την StringBuilder στη Java και θα σας δείξουμε μερικές από τις πολλές χρήσεις της.
Ποια είναι η σύνταξη του StringBuilder της Java;
Η σύνταξη του StringBuilder της Java ακολουθεί πάντα το ίδιο μοτίβο, το οποίο έχει την εξής μορφή:
public final class StringBuilder
extends Object
implements Serializable, CharSequencejavaΓια να κατανοήσετε τα βασικά στοιχεία του τρόπου λειτουργίας της κλάσης και του σκοπού της, είναι χρήσιμο να εξετάσετε πρώτα την παραδοσιακή κλάση String. Αφού δηλώσετε ένα αντικείμενο στην String, δεν μπορείτε πλέον να το αλλάξετε. Αν θέλετε να κάνετε αλλαγές, θα πρέπει να δημιουργήσετε και να αποθηκεύσετε ένα εντελώς νέο αντικείμενο. Αυτό δημιουργεί μεγάλη σπατάλη δεδομένων και μπορεί να οδηγήσει σε μείωση της απόδοσης. Αν αντί για αυτό χρησιμοποιήσετε το StringBuilder στη Java, μπορείτε να κάνετε αλλαγές στις συμβολοσειρές χωρίς να δημιουργήσετε μια νέα. Αυτό μειώνει τη σπατάλη και βελτιώνει την απόδοση.
Ποιοι είναι οι κατασκευαστές για το StringBuilder της Java;
Το StringBuilder της Java διαθέτει 4 κατασκευαστές που βοηθούν στη μετατροπή της συμβολοσειράς στη σωστή μορφή για την κλάση. Χρησιμοποιούνται επίσης για τη διαμόρφωση. Ακολουθούν οι τέσσερις κατασκευαστές και οι σκοποί τους:
StringBuilder(): Δημιουργεί ένα κενό StringBuilder με μέγιστη χωρητικότητα 16 χαρακτήρωνStringBuilder(int capacity): Δημιουργεί ένα StringBuilder χωρίς χαρακτήρες, του οποίου η μέγιστη χωρητικότητα ορίζεται χρησιμοποιώντας το όρισμα capacityStringBuilder(CharSequence seq): Δημιουργεί ένα string builder με τους ίδιους χαρακτήρες με την αποθηκευμένη ακολουθία χαρακτήρωνStringBuilder(String str): Δημιουργεί ένα StringBuilder με τη συμβολοσειρά που εισάγετε
Ας δούμε ένα παράδειγμα για να κατανοήσουμε πώς λειτουργούν στην πράξη αυτοί οι κατασκευαστές:
public class Main {
public static void main(String[] argv) throws Exception {
StringBuilder str = new StringBuilder();
str.append("ABC");
System.out.println("First constructor = " + str.toString());
StringBuilder str2 = new StringBuilder(5);
System.out.println("Second constructor = " + str2.capacity());
StringBuilder str3 = new StringBuilder("ABCDEFGHIJK");
System.out.println("Third constructor = " + str3.toString());
StringBuilder str4 = new StringBuilder(str3.toString());
System.out.println("Fourth constructor = " + str4.toString());
}
}javaΌταν χρησιμοποιούμε την εντολή Java System.out.println για να λάβουμε το αποτέλεσμα, λαμβάνουμε το εξής:
First constructor = ABC
Second constructor = 5
Third constructor = ABCDEFGHIJK
Fourth constructor = ABCDEFGHIJKjavaΠοιες μέθοδοι χρησιμοποιούνται με το StringBuilder στη Java;
Υπάρχουν διάφορες μέθοδοι που μπορούν να χρησιμοποιηθούν με την κλάση StringBuilder της Java. Παρακάτω παρουσιάζουμε μερικές από τις πιο σημαντικές, με παραδείγματα κώδικα.
append()
Η μέθοδος append() χρησιμοποιείται για να προσθέσει μια συμβολοσειρά σε μια άλλη. Έχει διάφορες παραμέτρους. Δείτε πώς λειτουργεί στην πράξη:
public class Main {
public static void main(String[] argv) throws Exception {
StringBuilder str = new StringBuilder("ABCDE");
str.append("FGHIJK");
System.out.println(str);
}
}javaΤο αποτέλεσμα είναι το εξής:
ABCDEFGHIJKjavainsert()
Η μέθοδος insert() χρησιμοποιείται σε συνδυασμό με το StringBuilder της Java για την εισαγωγή μιας συμβολοσειράς σε ένα συγκεκριμένο σημείο. Ακολουθεί ένα παράδειγμα για το πώς λειτουργεί:
public class Main {
public static void main(String[] argv) throws Exception {
StringBuilder str = new StringBuilder("ABCDE");
str.insert(1,"FGHIJK");
System.out.println(str);
}
}javaΑκολουθεί το αποτέλεσμα:
AFGHIJKBCDEFGHIJKjavaΟ ακέραιος αριθμός (στην περίπτωση αυτή 1) χρησιμοποιείται για να καθορίσει τη θέση στην οποία θα εισαχθεί η συμβολοσειρά.
replace()
Η μέθοδος replace() αντικαθιστά μια συμβολοσειρά ή μέρος μιας συμβολοσειράς. Ορίζεται χρησιμοποιώντας beginIndex και endIndex. Έτσι λειτουργεί στην πράξη:
public class Main {
public static void main(String[] argv) throws Exception {
StringBuilder str = new StringBuilder("ABCDE");
str.replace(1,4,"FGHIJK");
System.out.println(str);
}
}javaΤο αποτέλεσμα έχει την ακόλουθη μορφή:
AFGHIJKEjavareverse()
Η μέθοδος reverse() χρησιμοποιείται για να τοποθετήσει την αποθηκευμένη συμβολοσειρά σε αντίστροφη σειρά. Δείτε πώς λειτουργεί:
public class Main {
public static void main(String[] argv) throws Exception {
StringBuilder str = new StringBuilder("ABCDE");
str.reverse();
System.out.println(str);
}
}javaΑκολουθεί το αποτέλεσμα:
EDCBAjavadelete()
Μπορείτε να χρησιμοποιήσετε τη μέθοδο delete() με το StringBuilder της Java για να διαγράψετε όλο ή μέρος ενός string. Αν θέλετε να διαγράψετε μέρος του string, μπορείτε να το κάνετε με beginIndex και endIndex.
public class Main {
public static void main(String[] argv) throws Exception {
StringBuilder str = new StringBuilder("ABCDE");
str.delete(1,4);
System.out.println(str);
}
}javaΑκολουθεί το αποτέλεσμα:
AEjavacapacity()
Η μέθοδος capacity() σας δίνει τον τρέχοντα μέγιστο αριθμό χαρακτήρων για το StringBuilder. Συνήθως είναι 16. Αν αυξηθεί, αυτό γίνεται συνήθως χρησιμοποιώντας τον τύπο «τρέχων αριθμός χαρακτήρων * 2 + 2». Έτσι, αν είναι επί του παρόντος 16, θα πολλαπλασιαστεί με 2 (32) και στη συνέχεια θα προστεθούν 2. Μπορείτε να το δείτε στο παράδειγμά μας:
public class Main {
public static void main(String[] argv) throws Exception {
StringBuilder str = new StringBuilder();
System.out.println(str.capacity());
str.append("ABCDE");
System.out.println(str.capacity());
str.append("This is another example");
System.out.println(str.capacity());
}
}javaΤο αποτέλεσμα έχει την ακόλουθη μορφή:
16
16
34javaensureCapacity()
Η μέθοδος ensureCapacity() διασφαλίζει ότι ο αριθμός των διαθέσιμων χαρακτήρων είναι τουλάχιστον ίσος με την καθορισμένη τιμή. Εάν αυτό δεν ισχύει, η χωρητικότητα θα αυξηθεί χρησιμοποιώντας τον παραπάνω τύπο, «τρέχων αριθμός χαρακτήρων * 2 + 2». Αυτό μπορείτε να το δείτε στο παρακάτω παράδειγμα:
public class Main {
public static void main(String[] argv) throws Exception {
StringBuilder str = new StringBuilder();
System.out.println(str.capacity());
str.append("ABCDE");
System.out.println(str.capacity());
str.append("This is another example");
System.out.println(str.capacity());
str.ensureCapacity(5);
System.out.println(str.capacity());
str.ensureCapacity(40);
System.out.println(str.capacity());
}
}javaΑκολουθεί το αποτέλεσμα:
16
16
34
34
70javaΠρώτα βλέπουμε την τυπική τιμή (16), μετά αυτή η τιμή πολλαπλασιάζεται με 2 και προστίθεται στο 2 (34) και τέλος η νέα τιμή πολλαπλασιάζεται με 2 και προστίθεται στο 2.