Эффективный способ превратить строку в массив односимвольных строк состоит в следующем:
String[] res = new String[str.length()];
for (int i = 0; i < str.length(); i++) {
res[i] = Character.toString(str.charAt(i));
}
Однако это не учитывает тот факт, что char
вString
может фактически представлять половину кодовой точки Unicode.(Если кодовая точка отсутствует в BMP.) Чтобы справиться с этим, вам нужно перебрать кодовые точки ... что более сложно.
Этот подход будет быстрее, чем использование String.split(/* clever regex*/)
и это, вероятно, будет быстрее, чем использование потоков Java 8+.Вероятно, быстрее, чем это:
String[] res = new String[str.length()];
int 0 = 0;
for (char ch: str.toCharArray[]) {
res[i++] = Character.toString(ch);
}
, потому что toCharArray
должен скопировать символов в новый массив.