65. Удалить строки, начинающиеся с aaa
Условие задачи:
Необходимо реализовать метод, который принимает коллекцию строк и удаляет из неё все элементы, начинающиеся с "aaa".
Метод должен изменять переданную коллекцию.
Код:
public static void filterTripleA(
Collection<String> strings
) {
// код тут
}
Спойлеры к решению
Подсказки
💡 Для удаления элементов по условию можно использовать
💡 Перед вызовом
💡 Используй
💡 Переданная коллекция должна поддерживать удаление элементов.
removeIf().💡 Перед вызовом
startsWith() обработай значение null.💡 Используй
Collection<String> вместо raw-типа Collection.💡 Переданная коллекция должна поддерживать удаление элементов.
Решение
public static void filterTripleA(
Collection<String> strings
) {
if (strings == null) {
throw new IllegalArgumentException(
"Collection must not be null"
);
}
strings.removeIf(
value -> value != null
&& value.startsWith("aaa")
);
}
Пример использования:
List<String> strings = new ArrayList<>(
List.of(
"aaa123",
"bbb",
"aa",
"aaaa"
)
);
filterTripleA(strings);
System.out.println(strings);
Результат:
[bbb, aa]
Метод removeIf() безопасно удаляет элементы во время обхода коллекции.
Для неизменяемых коллекций, например созданных через List.of(), удаление приведёт к UnsupportedOperationException.
Временная сложность — O(n × m), где m — длина проверяемого префикса. Для фиксированного префикса "aaa" сложность можно считать O(n).