问题描述
我想分割一个 java.lang.Integer 数组并将结果保存到一个 java.lang.Double 数组中。我在互联网上搜索并找不到有用的信息(大部分关于 java.lang.Integer 类的搜索都导致原始类型的 int 操作,如 Division of integers in Java 和这个 Integer division in Java)。
我下面的代码不起作用
Integer[] FixedDays = {1,2,7,14,30,60,90,180,548,730,1095,1460,1825};
Double[] Ts = FixedDays / 365.0;
是否有一种快速的方法可以对 java.lang.Integer(或更一般的 Number 类和其他基本数学运算)进行除法?是否有一些数学包支持这种 Number 数组操作?
解决方法
您可以使用 Java Streams 非常简洁地做到这一点:
Arrays.stream(FixedDays).map(i -> i / 365.0).toArray();
或
double[] doubles = Arrays.stream(FixedDays)
.map(i -> i / 365.0)
.mapToDouble(Double::doubleValue)
.toArray();
或
Double[] Ts = Arrays.stream(FixedDays)
.map(i -> i / 365.0)
.toArray(Double[]::new);
,
你必须遍历每个元素
Integer[] FixedDays = {1,2,7,14,30,60,90,180,548,730,1095,1460,1825};
Double[] Ts = new Double[FixedDays.length];
for(int i = 0; i < FixedDays.length; i++) {
Ts[i] = FixedDays[i] / 365.0;
}
或者您可以使用流来获得更简洁的解决方案