Как удалить пустые строки в List?

Нужно удалить пустые строки в листе, однако на .remove() выдает ошибку как можно грамотно это записать? вот фрагмент кода:

private static List<String> deleteEmptyStringLoop(List<String> strings) {
        for (Iterator<String> iterator = strings.iterator(); iterator.hasNext();){
            String element = iterator.next();
            if("".equals((element))) {
                iterator.remove();
            }
        }
        return strings;
    }

public static void main (String[] args) {
List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd", "", "jk1"); 

System.out.println(Streams.deleteEmptyStringStream(strings));
System.out.println(Streams.deleteEmptyStringLoop(strings));

Ответы (2 шт):

Автор решения: lampa

Всё дело в том, что Arrays.asList() возвращает обертку над массивом, а массивы в джаве всегда фиксированные. Поэтому такие операции как remove(), add() не будут работать, т.к. они предполагают изменение размера массива.

Нужно просто обернуть список в любой другой изменяемый список:

new ArrayList<>(Arrays.asList("abc", "", "bc", "efg", "abcd", "", "jk1"))
→ Ссылка
Автор решения: Pavel

Просто отфильтруйте

List<String> notEmpty = Arrays.asList("abc", "", "bc", "efg", "abcd", "", "jk1")
    .stream()
    .filter(item -> !item.equals(""))
    .collect(Collectors.toList());
→ Ссылка