【发布时间】:2019-09-24 15:22:37
【问题描述】:
我有这个代码
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));
}
}
是否可以使用流来做到这一点?
谢谢。
【问题讨论】:
-
你为什么需要/想要这里的流媒体?
-
我执行复杂操作,流允许我并行。
标签: java java-8 java-stream reduce