#java #коллекции #java_stream
Можно это сделать используя java.util.stream? Пытался сделать это обычным способом, но не получается, думаю из-за сдвига после remove(). Listlist = 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 Эникейщик: Нельзя идти по массиву и проводить с ним манипуляции! Создайте новый массив и добавляйте туда элементы, удовлетворяющие условию. Listlist = 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());
Комментариев нет:
Отправить комментарий