Function<Map<?,List>,Integer> countMap = (Map)->{
Integer count = 0;
for(Object key:Map.keySet()){
count+=Map.get(key).size();
}
return count;
};
Integer test = countMap.apply(containedAssets);
コンパイルエラー:apply(java.util.Map<?,List>> in Function cannot be applied to java.util.Map<java.util.String,List<myClass>>
が表示されます。この種の操作はFunctionで禁止されていますか?私はMapを使わずに、リストを使っていろいろなコードを試してみました。Javaはどんなタイプのリストにも問題ありませんでした。java.util.Functionへのジェネリックの適用
? – Tunaki
'Function
副作用として、関数が' Integer'を返すという理由だけで、関数内のローカル変数に 'Integer'を使う必要はありません。すべての中間結果をボクシングするのではなく、最終結果をボックス化するのに十分なだけで 'int'を使うことができます。さらに、値を繰り返し処理できるときには、すべてのマッピングに対して 'Map.get'を呼び出すためにキーを繰り返し処理しないでください(https://docs.oracle.com/javase/8/docs/api/java/util/ Map.html#values--) – Holger