Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将泛型应用于java.util.Function Function_Java_Generics_Lambda - Fatal编程技术网

将泛型应用于java.util.Function Function

将泛型应用于java.util.Function Function,java,generics,lambda,Java,Generics,Lambda,您已声明您的函数以获取映射看起来您想要的是创建一个函数,该函数将返回映射中包含的所有列表大小的总和 那样的话,你可以 Function<Map<?, ? extends List<?>>, Integer> countMap = (map)->{ ToIntFunction由于不关心映射键类型和列表类型,您可以按如下方式声明函数: ToIntFunction<Map<?, ? extends List<?>>> fu

您已声明您的
函数
以获取
映射看起来您想要的是创建一个函数,该函数将返回
映射中包含的所有列表大小的总和

那样的话,你可以

Function<Map<?, ? extends List<?>>, Integer> countMap = (map)->{

ToIntFunction由于不关心映射键类型和列表类型,您可以按如下方式声明函数:

ToIntFunction<Map<?, ? extends List<?>>> function = 
    map -> map.values().stream().mapToInt(List::size).sum();

你到底想做什么?考虑更改为<代码>函数作为一个旁注,仅仅因为函数返回代码>整数< /代码>,你不必对函数中的局部变量使用<代码>整数< /代码>。您可以只使用
int
,因为它足以装箱最终结果,而不是装箱每个中间结果。此外,永远不要迭代键来调用
Map。如果可以,为每个映射获取
,或者
?如果类型未知,则扩展列表。由于只涉及列表大小,
List
是可能的。@Jean-FrançoisSavard您是对的,您的选项可以更灵活地使用。我会编辑。如果我们正在编辑,你甚至不必坚持对象是
List
s,
?扩展集合
也可以…它甚至可以是一个
?扩展集合而不是列表,因为
.size()
来自集合
Function<Map<?, ? extends List<?>>, Integer> countMap = (map)->{
ToIntFunction<Map<?, ? extends List<?>>> function = 
    map -> map.values().stream().mapToInt(List::size).sum();
Function<Map<?, ? extends List<?>>, Integer> countMap;
countMap = m -> m.values().stream().mapToInt(List::size).sum();