La complejidad dependerá de la expresión regular que use para dividir. (Sí, el argumento que proporciona a String.split (...) es una expresión regular!)
Para su ejemplo, será O(N)
donde N
está el número de caracteres en la Cadena de entrada.
El algoritmo de división es bastante sencillo, basado en una implementación de expresiones regulares existente. Una descripción de alto nivel es:
- Compila la expresión regular y crea un emparejador
- Iterar sobre la cuerda:
- Use
Matcher.find(...)
para encontrar el límite de la siguiente palabra
- Use String.substring para extraer la palabra
- Agregar palabra a una lista de cadenas
- Convierta la lista de cadenas en una matriz de cadenas.
La búsqueda de los descansos entre "palabras" será O(N)
o más compleja, dependiendo de la expresión regular (la find
llamada). La construcción de la lista, matriz de resultados y subcadenas será O(N)
en el peor de los casos.
Los detalles precisos se encuentran en el código fuente, que puede encontrar con Google. (Busque "java.lang.String" source
, elija uno y luego busque la versión de Java que le interesa. O busque los archivos en el archivo ZIP de código fuente incluido en su instalación de JDK)