使用 java8 实现List到Array的转换

来源:互联网 发布:weego我去旅行 知乎 编辑:程序博客网 时间:2024/06/07 00:15

开发中需要调用第三方的库,有些 API 的入参要求是 double[] 数组,程序根据用户在页面的输入,计算出一个 double[] 作为返回值的结果,然后调用这个 API。

往往无法预先知道这个 double[] 数组的大小,就不能直接定义一个 double[] 的变量,只能借助 List,先将数据放入 List, 再转换为 double[] 数组。这个很简单,一个 for 循环就搞定了,但是使用 java 8 的 stream 特性就能让代码更优雅些。下面是我程序中的例子:

List<Double> factorValueList = new ArrayList<>();for (Integer defId : input.getCohortDefIds()) {for (double d : calcVarValues(defId, factorVar)) {factorValueList.add(d);}}double[] factorVarValues = factorValueList.stream().mapToDouble(Double::doubleValue).toArray();

List 本身有个 API, 是带参数的 toArray(),但是在某些情况下,转型后 Array 编译没问题,运行时报错,具体什么错我忘了,下次发现了再来更新文章。

为保险起见,还是使用 stream 最可靠,代码也好看。

原创粉丝点击