我的以下代码运行流畅,并成功打印出[1,2,3,4,5]。

import static java.util.Arrays.asList;

public class JavaApplication2 {
    public static ArrayList<Integer> Foo()
    {
       return new ArrayList<>(asList(1,2,3,4,5));
    }

    public static void main(String[] args) {
        System.out.println(Foo());
    }
}


但是,如果我更改返回类型为

ArrayList<Double>,


然后我有“不兼容的类型”编译错误。

问题:仅给出以下资源,如何编写函数体(如果在一行中完成,效果会很好)?


返回类型:

ArrayList<Double>

1.0、2、3.1、4、5


注意:我正在编写一个程序,以根据给定的列表文字生成代码,并且无法标记逗号分隔的值,该值可能是1、2、3、4、5或1.0、2.0、3.0、4.0、5.0或它们的混合。

public class JavaApplication2 {
    public static ArrayList<Double> Foo()
    {
        //HOW TO WRITE THIS FUNCTION BODY?
        1.0, 2, 3.1, 4, 5
    }

    public static void main(String[] args) {
        System.out.println(Foo());
    }
}


我期待程序打印:

[1.0, 2.0, 3.1, 4.0, 5.0]

最佳答案

您可以使用DoubleStream执行此操作:

public static ArrayList<Double> Foo() {
    return DoubleStream.of(1.0, 2, 3.1, 4, 5)
            .boxed()
            .collect(Collectors.toCollection(ArrayList::new));
}

关于java - 如何从混合整数和浮点数的列表的一行中初始化ArrayList <Double>?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48332271/

10-10 02:46