Η κλάση 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, CharSequence
java

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

Ποιοι είναι οι κατασκευαστές για το StringBuilder της Java;

Το StringBuilder της Java διαθέτει 4 κατασκευαστές που βοηθούν στη μετατροπή της συμβολοσειράς στη σωστή μορφή για την κλάση. Χρησιμοποιούνται επίσης για τη διαμόρφωση. Ακολουθούν οι τέσσερις κατασκευαστές και οι σκοποί τους:

  • StringBuilder(): Δημιουργεί ένα κενό StringBuilder με μέγιστη χωρητικότητα 16 χαρακτήρων
  • StringBuilder(int capacity): Δημιουργεί ένα StringBuilder χωρίς χαρακτήρες, του οποίου η μέγιστη χωρητικότητα ορίζεται χρησιμοποιώντας το όρισμα capacity
  • StringBuilder(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 = ABCDEFGHIJK
java

Ποιες μέθοδοι χρησιμοποιούνται με το 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

Το αποτέλεσμα είναι το εξής:

ABCDEFGHIJK
java

insert()

Η μέθοδος 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

Ακολουθεί το αποτέλεσμα:

AFGHIJKBCDEFGHIJK
java

Ο ακέραιος αριθμός (στην περίπτωση αυτή 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

Το αποτέλεσμα έχει την ακόλουθη μορφή:

AFGHIJKE
java

reverse()

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

public class Main {
	public static void main(String[] argv) throws Exception {
	StringBuilder str = new StringBuilder("ABCDE");
	str.reverse();
	System.out.println(str);
	}
}
java

Ακολουθεί το αποτέλεσμα:

EDCBA
java

delete()

Μπορείτε να χρησιμοποιήσετε τη μέθοδο 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

Ακολουθεί το αποτέλεσμα:

AE
java

capacity()

Η μέθοδος 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
34
java

ensureCapacity()

Η μέθοδος 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
70
java

Πρώτα βλέπουμε την τυπική τιμή (16), μετά αυτή η τιμή πολλαπλασιάζεται με 2 και προστίθεται στο 2 (34) και τέλος η νέα τιμή πολλαπλασιάζεται με 2 και προστίθεται στο 2.

Go to Main Menu