Вы можете использовать
personalNames.removeIf(Pattern.compile("^SACHI").asPredicate());
Вы также можете использовать более простой
personalNames.removeIf(s -> s.matches("^SACHI"));
, но он будет выполнять Pattern.compile("^SACHI")
под капотом, для каждого элемента в худшем случае.Обратите внимание, что Pattern
, созданный compile
, является неизменным и может использоваться совместно, следовательно, вы также можете создать его только один раз, например
static final Pattern REMOVAL_PATTERN = Pattern.compile("^SACHI");
, и использовать его как
personalNames.removeIf(REMOVAL_PATTERN.asPredicate());
asPredicate()
использует find()
вместо matches()
, но поскольку ваш паттерн имеет привязку ^
, это не имеет значения.Метод asMatchPredicate()
для получения предиката с использованием matches()
был добавлен в JDK 11.
Если все, что вам нужно, это сопоставить буквенную строку в начале, вы также можете использовать
personalNames.removeIf(s -> s.startsWith("SACHI"));
, для которого не требуются затраты на инициализацию регулярного выражения.