Java8集合Replaceall方法错误

Java8集合Replaceall方法错误,java,collections,java-8,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

我希望你能帮助我,因为我是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);
    }
}
公共类主{
公共静态void main(字符串[]args){
ArrayList coll1=新的ArrayList();
第1条增加(2.5);
第1条增补(3.5);
printColl(多(coll1));
}
公共静态ArrayList multi(ArrayList coll1){
返回coll1.replaceAll(aDouble->aDouble*2.0);
}
公共静态void printColl(ArrayList coll){
coll.stream().forEach(System.out::println);
}
}
我有以下问题:我有一个带有2个double的ArrayList,我正试图用“multi”方法修改它。我使用“replaceAll”方法更改lambda表达式的单个值,但我得到了一个错误

错误为“不兼容的类型。必需:java.util.List已找到:void”


我希望您能帮助我,因为我真的不知道为什么会出现此错误。

让我们看看replaceAll方法签名:

public void replaceAll(一元运算符)

如您所见,它不返回任何内容,这意味着它修改了现有的ArrayList

因此,在您的情况下,您需要执行以下操作:

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

replaceAll
不返回任何内容,它会就地修改。操作完成后,可以使
multi
返回
void
或返回
coll1