Как удалить пустые строки в 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());