java - 将一个元素与列表中的所有其他元素相加
问题描述
import java.util.*;
import java.util.stream.*;
class Test {
public static void main (String [] args) {
int numbers[] = {1,2,3};
List<Integer> solution = new ArrayList<Integer>();
for(int i = 0; i < numbers.length; i++) {
int temp= 0;
for(int j = 0; j < numbers.length; j ++) {
if (i == j) continue;
temp += numbers[i] + numbers[j];
}
solution.add(temp);
}
System.out.println(solution);
}
}
ex: [1,2,3] = [ (1 + 2) + (1 + 3), (2 + 1) + (2 + 3), (3 + 2) + (3 + 1)] = [7, 8, 9]
本质上,这将列表中的所有其他元素相加。如何仅使用 Java Streams 编写此内容?
解决方案
每个输出元素是(sum of list) + (length of list - 2) * (input element)
。
所以,计算总和:
int sum = IntStream.of(numbers).sum();
然后:
List<Integer> solution =
IntStream.of(numbers)
.map(e -> sum + (numbers.length - 2) * e)
.boxed()
.collect(Collectors.toList());
推荐阅读
- sql-server - 是否可以从其他数据库表中的触发器调用 UDF?
- sql - 在 SQL 中,我需要知道如何根据列显示所有特定值
- ibm-data-replication - 运行订阅不识别 Kerberos 证书续订
- java - 检索令牌时无法调用 keycloak 协议映射器
- azure - Kusto (KQL) 加入多个列
- spring-boot - Springboot Apache Ignite 集成 - 数据库集成
- spring-boot - Spring Boot 服务器为图像提供 404
- youtube - youtube apikey 在夜间不起作用
- c# - AntiForgeryToken 未通过 href 链接提交表单
- javascript - 如何让文字在屏幕上来回移动?