1. Modificación de cadenas

En Java, las cadenas son objetos inmutables. Esto se hizo para optimizar la clase String y permitir que se use en todas partes. Por ejemplo, solo se recomienda el uso de tipos inmutables como claves en la colección HashMap .

Sin embargo, a menudo surgen situaciones en las que a los programadores les resulta más conveniente que la Stringclase sea mutable. Quieren una clase que no cree una nueva subcadena cada vez que se llama a uno de sus métodos.

Bueno, supongamos que tenemos una cadena muy grande y necesitamos agregar algo al final con frecuencia. En este caso, incluso una colección de caracteres ( ArrayList<Character>) puede ser más eficiente que recrear y concatenar constantemente objetos String.

Es precisamente por eso que se agregó al lenguaje Java un tipo similar a una cadena que se puede cambiar. se llama StringBuilder.

Creando un objeto

Para crear un StringBuilderobjeto basado en una cadena existente, debe ejecutar una declaración como:

StringBuilder name = new StringBuilder(string);

Para crear una cadena mutable vacía, debe usar una declaración como esta:

StringBuilder name = new StringBuilder();

Lista de métodos

La StringBuilderclase tiene dos docenas de métodos útiles. Aquí están los más importantes:

Método Descripción
StringBuilder append(obj)
Convierte el objeto pasado en una cadena y lo agrega a la cadena actual
StringBuilder insert(int index, obj)
Convierte el objeto pasado en una cadena y lo inserta en la cadena actual
StringBuilder replace(int start, int end, String str)
Reemplaza la parte de la cadena especificada por el intervalo de inicio... fin con la cadena pasada
StringBuilder deleteCharAt(int index)
Elimina el carácter con el índice especificado de la cadena
StringBuilder delete(int start, int end)
Elimina caracteres dentro del intervalo especificado de la cadena
int indexOf(String str, int index)
Busca una subcadena en la cadena actual
int lastIndexOf(String str, int index)
Busca una subcadena en la cadena actual, comenzando desde el final
char charAt(int index)
Devuelve el carácter de la cadena en el índice pasado
String substring(int start, int end)
Devuelve la subcadena definida por el intervalo especificado
StringBuilder reverse()
Invierte la cadena actual.
void setCharAt(int index, char)
Cambia el carácter en el índice especificado al carácter pasado
int length()
Devuelve la longitud de la cadena en caracteres

Aquí hay una breve descripción de cada método.


2. Descripción de los métodos:

Agregar a una cadena

Para agregar algo a una cadena mutable ( StringBuilder), use el append()método. Ejemplo:

Código Descripción
StringBuilder builder = new StringBuilder("Hi");
builder.append("Bye");
builder.append(123);
Hi
HiBye
HiBye123

Conversión a una cadena estándar

Para convertir un StringBuilderobjeto en un objeto String, solo necesita llamar a su toString()método. Ejemplo

Código Producción
StringBuilder builder = new StringBuilder("Hi");
builder.append(123);
String result = builder.toString();
System.out.println(result);
Hi123

¿Cómo elimino un personaje?

Para eliminar un carácter en una cadena mutable, debe usar el deleteCharAt()método. Ejemplo:

Código Producción
StringBuilder builder = new StringBuilder("Hello");
builder.deleteCharAt(2);
String result = builder.toString();
System.out.println(result);
Helo

¿Cómo reemplazo parte de una cadena con otra cadena?

Para esto existe el replace(int begin, int end, String str)método. Ejemplo:

Código Producción
StringBuilder builder = new StringBuilder("Mellow");
builder.replace(2, 5, "Hello!");
String result = builder.toString();
System.out.println(result);
MeHello!w

6
Tarea
Módulo 1. Java Syntax,  nivel 13lección 2
Bloqueada
Necesidad de velocidad
task1004

3. Ejemplos útiles de trabajo con cadenas

¿Cómo invierto una cadena?

Hay un método especial para hacer esto: reverse(); Ejemplo:

Código Producción
String str = "Hello";
StringBuilder builder = new StringBuilder(str);
builder.reverse();
String result = builder.toString();
System.out.println(result);
olleH

StringBufferclase

Hay otra clase: StringBuffer, que es un análogo de la StringBuilderclase, pero sus métodos están marcados con el synchronizedmodificador. Significa que StringBufferse puede acceder al objeto simultáneamente desde varios subprocesos.

Pero es mucho más lento que StringBuilder. Es posible que necesite esta clase cuando comience a explorar activamente los subprocesos múltiples en la búsqueda de subprocesos múltiples de Java .


6
Tarea
Módulo 1. Java Syntax,  nivel 13lección 2
Bloqueada
Serial empresario
task1005