У меня есть этот код
List<Integer> numbers = new ArrayList<>(30, 25, 17, 12 ,8, 5, 3, 2));
List<Integer> indices = new ArrayList<>(5, 3, 2));
Integer newNumber = 1;
for (int i = indices.size() - 1; i >= 0; i--) {
newNumber *= (numbers.get(indices.get(i)));
}
newNumber
будет: 5*12*17 = 1020
Можно сделать с помощью Stream Reduce?
Позже мне нужноудалите индексы из исходных чисел (я думал в фильтре, но целью является индекс, а не объект Integer).
List<Integer> newNumbers = new ArrayList<>(numbers);
for (int i = indices.size() - 1; i >= 0; i--) {
newNumbers.remove(indices.get(i).intValue()); // Remove position
}
В качестве альтернативы я думал в этом коде.
List<Integer> newNumbers2 = new ArrayList<>();
for (int i = 0; i < numbers.size(); i++) {
if (!indices.contains(i)) {
newNumbers2.add(numbers.get(i));
}
}
Можно ли сделать это с помощью потока?
Спасибо.