Java8 Collection Replaceall-Method错误

时间:2016-04-22 09:26:28

标签: java collections java-8

我希望你能帮助我,因为我是Java-8的新手

public class main {

    public static void main(String[] args){
        ArrayList<Double> coll1 = new ArrayList<>();
        coll1.add(2.5);
        coll1.add(3.5);
        printColl(multi(coll1));
    }

    public static ArrayList<Double> multi(ArrayList<Double> coll1) {
        return coll1.replaceAll(aDouble -> aDouble*2.0);
    }

    public static void printColl(ArrayList<?> coll) {
        coll.stream().forEach(System.out::println);
    }
}

我有以下问题:我有一个带有2个双打的ArrayList,我试图用“multi”方法修改它。我使用方法“replaceAll”来改变lambda表达式的单个值,但是我得到了一个错误。

错误是“不兼容的类型。必需:java.util.List Found:void”

我希望你能帮助我,因为我真的不知道为什么我会收到这个错误。

1 个答案:

答案 0 :(得分:1)

让我们看一下replaceAll方法签名:

public void replaceAll(UnaryOperator<E> operator)

你可以看到它没有返回任何东西,这意味着它修改了现有的ArrayList。

所以在你的情况下,你需要做类似的事情:

public static ArrayList<Double> multi(ArrayList<Double> coll1) {
        coll1.replaceAll(aDouble -> aDouble*2.0);
        return coll1;
    }