array - string to char java
¿Cuál es la diferencia entre String.subString() y String.subSequence() (7)
String.subSequence()
tiene el siguiente javadoc:
Devuelve una nueva secuencia de caracteres que es una subsecuencia de esta secuencia.
Una invocación de este método de la forma.
str.subSequence(begin, end)
Se comporta exactamente de la misma manera que la invocación.
str.substring(begin, end)
Este método se define para que la clase String pueda implementar la interfaz CharSequence.
¿Alguien puede explicar?
Básicamente es justo lo que se devuelve. Una cadena y la otra CharSequence (que puedes convertir como una cadena).
Usaría la subsecuencia cuando necesite un tipo de variable CharSequence.
El uso de str.subSequence(begin, end)
devuelve un CharSequence que es una forma de solo lectura de la cadena representada como una secuencia de caracteres. Por ejemplo:
String string = "Hello";
CharSequence subSequence = s.subSequence(0, 5);
Solo se lee en el sentido de que no puede cambiar los chars
dentro de la CharSequence
sin crear una instancia de una CharSequence
.
Si tiene que usar str.subSequence(begin, end)
, puede convertir el resultado en un String
:
String string = "Hello";
String subSequence = (String) s.subSequence(0, 5);
y usa todos los operadores de String
normales como subSequence += " World";
En resumen, no importa mucho para los objetos String
. Son equivalentes, a menos que necesite pasar el resultado a algo que solo tome String
, en cuyo caso debe usar la subtring(int,int)
o convertir la versión de subsequence(int,int)
a una String
(porque eso es lo que es, internamente).
String.substring(int,int)
existió primero, porque String
existió primero. En Java 1.4, se agregó CharSequence
, y alguien aparentemente se dio cuenta de que sería útil tener la misma funcionalidad allí, pero que devolvía un CharSequence
lugar de String
(por flexibilidad). Entonces, llegó CharSequence.subSequence(int,int)
. Sin embargo, como String
implementa CharSequence
, String
heredó el método aparentemente redundante.
En términos simples de comprensión:
Subcadena : una subcadena es una secuencia contigua de caracteres dentro de una cadena, donde más importa.
Substring
string
ring
Subsecuencias : De una cadena, cualquiera de los caracteres pero en secuencia.
Substring
u s i
s b t i n g
r g
Para comprender esto, lo primero que debe saber es que ¿cuál es la diferencia entre subcadena y subsecuencia?
subcadena es una parte o subparte continua de una cadena
mientras
La subsecuencia es la parte de una cadena o secuencia, que puede ser continua o no, pero se mantiene el orden de los elementos.
Ejemplo
digamos str_a = "hola"
Además tenemos las siguientes cadenas:
str_b = "hello", str_c = "ello th", str_d = "hllo", str_e = "ho hre", str_f = "there hello"
str_b es una subcadena de str_a, str_c también es una subcadena de str_a pero str_d no es una subcadena de str_a ya que esta subcadena no es continua .
Ahora todas las subscripciones son subsecuencias a medida que se mantiene el orden.
str_d es una subsecuencia de str_a, str_e también es una subsecuencia de str_a, sin embargo str_f no es una subsecuencia de str_a, ya que en este caso no se mantiene el orden .
Ahora para Java, no hay una aclaración apropiada con respecto a estos métodos en javadoc.
Si observa la fuente de String, verá que la subsecuencia en realidad llama subcadena. Lo único que hace diferente a la subcadena es que convierte la cadena en un CharSequence.
Subsecuencia
Subsecuencia es una generalización de subcadena, sufijo y prefijo. Encontrar la cadena más larga que es una subsecuencia de dos o más cadenas se conoce como el problema de subsecuencia común más largo.
Ejemplo: la cadena "anna" es una subsecuencia de la cadena "banana":
banana
|| ||
an na
Subcadena
Una subcadena de una cadena es un prefijo de un sufijo de la cadena, y equivalentemente un sufijo de un prefijo. Si una cadena es una subcadena de otra, también es una subsecuencia, que es un concepto más general.
Ejemplo: la cadena "ana" es una subcadena (y subsecuencia) de banana en dos compensaciones diferentes:
banana
|||||
ana||
|||
ana
Lea más here .
Pero en lo que respecta a Java, no hay ninguna diferencia en su uso como se indica claramente en el javadoc . Además, como se indica allí, el método subSequence
solo se ha implementado en la clase String
para mantenerlo en conformidad con la interfaz CharSequence
. Y el nombre de este método es de hecho un nombre inapropiado.