[英]java - convert primitive double array to collection
我想要一个浮点数(双打)和整数数组如下 -
double[] myArr = {0, 0, 95, 9.5, 19, 610.5, 1217, 5.14, 4038.66, 10.23, 7961, 828, 199858, 37325.3};
然后我有这个函数返回max和min
public static void getMaxArrVal(double[] myArr) {
myCol = /* Code to convert myarr to collection should come here */
System.out.println(Collections.min(myCol ));
System.out.println(Collections.max(myCol ));
}
}
getMaxArrVal(myArr);
我在将原始数据类型转换为集合时遇到了问题。我尝试将其转换为双列表,尝试将myArr转换为char / String以检查一些事情,但没有任何明显的效果。
我一直看到原始数据类型的编译错误。 我也尝试过Double
但没有运气。
我怎么可能将数组转换为集合并在此计算最小值/最大值。 我很感激她的帮助。
番石榴有很好的解决方案
Lists.newArrayList(double[])
这与Java 8很好地配合:
Arrays.stream(myArr).boxed().collect(Collectors.toCollection(ArrayList::new));
当然,可以使用任何Collection
而不是ArrayList
。 我在这里的代码实际上可以简化为Collectors.toList()
。
另外,正如@ nukie的回答所述 , DoubleStream
有自己的min()
和max()
方法,使得转换无用。 仅使用使用Arrays.stream(myArr)
创建的两个流并调用这些方法。
如果您在java8上运行此代码,您可以尝试lambdas:
Arrays.stream(myArr).max();
和
Arrays.stream(myArr).max();
double[] primitives = new double[] { 1.0, 2.0, 3.0};
List<Double> objects = new ArrayList<>();
for(double num : primitives) {
objects.add(num);
}
public static void main(String[] args) throws Exception {
Double [] myArr = {0., 0., 95., 9.5, 19., 610.5, 1217., 5.14, 4038.66, 10.23, 7961., 828., 199858., 37325.3};
Double min = Arrays.stream(myArr).min(Comparator.<Double>naturalOrder()).get();
Double max = Arrays.stream(myArr).max(Comparator.<Double>naturalOrder()).get();
System.out.println(min);
System.out.println(max);
}
如果您不需要收集任何其他内容,除了查找max
和min
,请从数组创建流。 在这种情况下,您根本不需要创建单独的集合。
使用Arrays.sort将按升序对数组进行排序。 因此,您知道min将是数组的第一个元素myArr [0],并且您的max将是数组myArr [myArr.length-1]中的最后一个元素。
double[] myArr = {0, 0, 95, 9.5, 19, 610.5, 1217, 5.14, 4038.66, 10.23, 7961, 828, 199858, 37325.3};
Arrays.sort(myArr);
System.out.println(myArr[0]);
System.out.println(myArr[myArr.length-1]);
以下将导致
0.0 < - 分钟
199858.0 < - 最大
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.