Страницы

Поиск по вопросам

среда, 18 декабря 2019 г.

Как удалить из коллекции все отрицательные числа?

#java #коллекции #java_stream


Можно это сделать используя java.util.stream?
Пытался сделать это обычным способом, но не получается, думаю из-за сдвига после
remove().

List list = new ArrayList();
    list.add(-1);
    list.add(-2);
    list.add(-3);
    list.add(4);
    list.add(1);

    for(int i = 0; i <= list.size(); i++) {
        if(list.get(i) < 0) 
            list.remove(i);
    }

    


Ответы

Ответ 1



By Эникейщик: Нельзя идти по массиву и проводить с ним манипуляции! Создайте новый массив и добавляйте туда элементы, удовлетворяющие условию. List list = new ArrayList(Arrays.asList(-1,-2,-3,5,4,2)); List list2 = new ArrayList<>(); for(int i = 0; i <= list.size(); i++) if(list.get(i) > 0) list2.add(list.get(i));

Ответ 2



В Java 8 появился специальный метод, для удаления элементов коллекции, которые соответствуют заданному предикату: list.removeIf(value -> value < 0); P.S и не требуется создавать новую коллекцию.

Ответ 3



Вот так можно создать новую коллекцию с только положительными числами с помощью стримов. list = list.stream() .filter(s -> s > 0) .collect(Collectors.toList());

Комментариев нет:

Отправить комментарий