我刚刚开始使用Java 8 lambdas,我正在尝试实现我在函数式语言中习惯的一些东西.
例如,大多数函数式语言都有某种类型的查找函数,这些函数对序列进行操作,或者列表返回谓词所在的第一个元素true.我在Java 8中实现这一目标的唯一方法是:
lst.stream()
.filter(x -> x > 5)
.findFirst()
Run Code Online (Sandbox Code Playgroud)
然而这对我来说似乎效率低下,因为过滤器会扫描整个列表,至少根据我的理解(这可能是错误的).有没有更好的办法?
到目前为止,我唯一可以使用的方法是循环遍历整个数组.我希望有类似的东西:
ArrayList<Double> myArrayList = ... // initiaize
double[] myArray = ... // magic line here
Run Code Online (Sandbox Code Playgroud) 我已经设置了以下ArrayList:
ArrayList<Integer> myIntegerValues = new ArrayList<Integer>();
myIntegerValues.add(0);
myIntegerValues.add(1);
myIntegerValues.add(0);
myIntegerValues.add(1);
Run Code Online (Sandbox Code Playgroud)
我想将其转换为a double[]并运行这样一段简单的代码
double[] myList = {1.9, 2.9, 3.4, 3.5, 2.9, 3.8, 10.2};
for (int i = 0; i < myList.length; i++) {
System.out.println(myList[i] + " ");
}
Run Code Online (Sandbox Code Playgroud)
如何将其转换ArrayList为double[]?
我在Java中找到了这个链接 如何从List <Double>转换为double []? 但我不确定这是否能回答我的问题.