1. Dizeleri değiştirme

Java'da dizeler değişmez nesnelerdir. Bu, String sınıfını yüksek düzeyde optimize etmek ve her yerde kullanılmasına izin vermek için yapıldı. Örneğin, HashMap koleksiyonunda anahtar olarak kullanılmak üzere yalnızca değişmez türlerin kullanılması önerilir .

StringBununla birlikte, programcıların sınıfın değişken olmasını daha uygun bulduğu durumlar sıklıkla ortaya çıkar . Yöntemlerinden biri her çağrıldığında yeni bir alt dize oluşturmayan bir sınıf istiyorlar.

Pekala, çok büyük bir dizimiz olduğunu ve sonuna sık sık bir şeyler eklememiz gerektiğini varsayalım. Bu durumda, bir karakter koleksiyonu ( ArrayList<Character>) bile, String nesnelerini sürekli olarak yeniden oluşturmaktan ve birleştirmekten daha verimli olabilir.

İşte tam da bu yüzden Java diline String benzeri değiştirilebilen bir tür eklendi. denir StringBuilder.

nesne oluşturma

Varolan bir dizeye dayalı bir nesne oluşturmak için StringBuilderaşağıdaki gibi bir ifade yürütmeniz gerekir:

StringBuilder name = new StringBuilder(string);

Boş bir değiştirilebilir dize oluşturmak için şöyle bir ifade kullanmanız gerekir:

StringBuilder name = new StringBuilder();

yöntemlerin listesi

Sınıfın StringBuilderiki düzine yardımcı yöntemi vardır. İşte en önemlileri:

Yöntem Tanım
StringBuilder append(obj)
Geçirilen nesneyi bir dizeye dönüştürür ve onu geçerli dizeye ekler
StringBuilder insert(int index, obj)
Geçirilen nesneyi bir dizeye dönüştürür ve onu geçerli dizeye ekler
StringBuilder replace(int start, int end, String str)
Dizinin start..end aralığı tarafından belirtilen kısmını geçirilen dizeyle değiştirir
StringBuilder deleteCharAt(int index)
Belirtilen dizine sahip karakteri dizeden kaldırır
StringBuilder delete(int start, int end)
Belirtilen aralıktaki karakterleri dizeden kaldırır
int indexOf(String str, int index)
Geçerli dizede bir alt dize arar
int lastIndexOf(String str, int index)
Sondan başlayarak geçerli dizide bir alt dize arar
char charAt(int index)
Geçirilen dizindeki dizedeki karakteri döndürür
String substring(int start, int end)
Belirtilen aralık tarafından tanımlanan alt dizeyi döndürür
StringBuilder reverse()
Geçerli dizeyi tersine çevirir.
void setCharAt(int index, char)
Belirtilen dizindeki karakteri geçen karaktere değiştirir
int length()
Karakter dizisinin uzunluğunu döndürür

İşte her yöntemin kısa bir açıklaması


2. Yöntemlerin açıklaması:

Bir dizeye ekleme

Değişken bir dizeye ( StringBuilder) bir şey eklemek için append()yöntemi kullanın. Örnek:

kod Tanım
StringBuilder builder = new StringBuilder("Hi");
builder.append("Bye");
builder.append(123);
Hi
HiBye
HiBye123

Standart bir diziye dönüştürme

Bir nesneyi String nesnesine dönüştürmek için StringBuilder, onun yöntemini çağırmanız yeterlidir toString(). Örnek

kod Çıktı
StringBuilder builder = new StringBuilder("Hi");
builder.append(123);
String result = builder.toString();
System.out.println(result);
Hi123

Bir karakteri nasıl silerim?

Değiştirilebilir bir dizideki bir karakteri silmek için yöntemi kullanmanız gerekir deleteCharAt(). Örnek:

kod Çıktı
StringBuilder builder = new StringBuilder("Hello");
builder.deleteCharAt(2);
String result = builder.toString();
System.out.println(result);
Helo

Bir dizenin bir kısmını başka bir dizeyle nasıl değiştiririm?

Bunun için yöntem var replace(int begin, int end, String str). Örnek:

kod Çıktı
StringBuilder builder = new StringBuilder("Mellow");
builder.replace(2, 5, "Hello!");
String result = builder.toString();
System.out.println(result);
MeHello!w


3. Dizelerle çalışmanın faydalı örnekleri

Bir diziyi nasıl tersine çeviririm?

Bunu yapmak için özel bir yöntem var — reverse(); Örnek:

kod Çıktı
String str = "Hello";
StringBuilder builder = new StringBuilder(str);
builder.reverse();
String result = builder.toString();
System.out.println(result);
olleH

StringBuffersınıf

Başka bir sınıf daha vardır — sınıfın bir benzeri olan StringBuffer, StringBuilderancak yöntemleri değiştirici ile işaretlenmiştir synchronized. StringBufferBu , nesneye aynı anda birden çok iş parçacığından erişilebileceği anlamına gelir .

Ama ondan çok daha yavaş StringBuilder. Java Multithreading arayışında multithreading'i aktif olarak keşfetmeye başladığınızda bu sınıfa ihtiyacınız olabilir .