2016-04-22 10 views
1

私はあなたが私がJava8Java8コレクションでReplaceAll・メソッドのエラー

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のが見つかりました:無効」である

私は本当に私はこのエラーを取得していますなぜ知らないとあなたは私を助けることができると思います。

+6

は 'replaceAll'は何も返さない、それはその場で変更します。

はそうあなたのケースでは、あなたのような何かをする必要があります。操作の後に 'multi'を' void'を返すか、 'coll1'を返すかのどちらかです。 – Tunaki

+0

https://docs.oracle.com/javase/8/docs/api/java/util/List.html#replaceAll-java.util.function.UnaryOperator- – ChiefTwoPencils

答えて

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; 
    } 
+0

RTMには常に良い:) – AlBlue

関連する問題