爪哇 - 原始双数组转换成集合
我期待有花车(双打)&整数如下数组 -爪哇 - 原始双数组转换成集合
double[] myArr = {0, 0, 95, 9.5, 19, 610.5, 1217, 5.14, 4038.66, 10.23, 7961, 828, 199858, 37325.3};
然后我有这个函数,返回最大&分钟
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
,但没有运气。
我怎么可能将数组转换为集合&这个计算最小/最大值。我会很感激任何帮助她请。
这与Java 8很好地工作:
Arrays.stream(myArr).boxed().collect(Collectors.toCollection(ArrayList::new));
当然,可以使用任何Collection
而不是ArrayList
。我在这里的代码实际上可以简化为Collectors.toList()
。
此外,如@nukie's answer,DoubleStream
中所述,它有其自己的min()
和max()
方法,使得转换无效。仅使用使用Arrays.stream(myArr)
创建的两个流并调用这些方法。
非常感谢。这有助于 – usert4jju7
番石榴配备了很好的解决方案
Lists.newArrayList(double[])
,如果你在java8运行这段代码,你可以尝试lambda表达式:
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
,直接从数组创建流。在这种情况下,你根本不需要创建单独的集合。
不要忘记'Stream'对象只能使用一次。只需使用'Arrays.stream(myArr)'两次... –
尝试运行您的代码。 –
@YassinHajaj我做到了。你说得对。感谢您的评论。 –
使用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 < - 最大
这种方法会改变原始数组的顺序。但是,如果OP不在乎 - 完美的解决方案。 –
谢谢Mike。我需要数组顺序保持不变。 – usert4jju7
检查此http://stackoverflow.com/questions/5178854/convert-a -double-array-to-double-arraylist#5178920 – prasad
@prasad是正确的;这个问题本质上是一个确切的重复。 – bcsb1001