Есть только два метода, которые вам действительно нужно рассмотреть.
Используйте String.split, если используется разделитель из одного символа, или вас не волнует производительность
Еслипроизводительность не является проблемой, или если разделитель представляет собой один символ, который не является специальным символом регулярного выражения (т. е. не является одним из .$|()[{^?*+\
), тогда вы можете использовать String.split
.
String[] results = input.split(",");
.Метод split имеет оптимизацию, позволяющую избежать использования регулярного выражения, если разделитель представляет собой один символ и отсутствует в приведенном выше списке.В противном случае, он должен скомпилировать регулярное выражение, и это не идеально.
Используйте Pattern.split и прекомпилируйте шаблон, если используете сложный разделитель, и вы заботитесь о производительности
Если производительность является проблемой, а ваш разделитель не относится к числу вышеперечисленных, вам следует предварительно скомпилировать шаблон регулярного выражения, который затем можно использовать повторно.
// Save this somewhere
Pattern pattern = Pattern.compile("[,;:]");
/// ... later
String[] results = pattern.split(input);
Этот последний параметр все еще создает новый Matcher
объект.Вы также можете кэшировать этот объект и сбрасывать его для каждого входа для максимальной производительности, но это несколько сложнее и не поточнобезопасно.