gpt4 book ai didi

具有泛型的 Java 流

转载 作者:搜寻专家 更新时间:2023-10-31 19:51:42 24 4
gpt4 key购买 nike

我有一个接受 Collection<? extends T> ts 的通用函数.

我也路过:

Function<? extends T, ? extends K> classifier映射每个项目 T一把 key K (可能有重复)

Function<? extends T, Integer> evaluator它给出了项目的整数值。

对于每个生成的 int to int,该函数本身都有一个内置计算(“Integer”) (对于我们的示例,可能类似于平方)

最后,我想对每个键的所有值求和。

所以最终结果是:Map<K, Integer> .

例如,
假设我们有列表 ["a","a", "bb"]我们使用 Function.identity分类,String::length评估和平方作为内置函数。然后返回的 map 将是:{"a": 2, "b": 4}

我该怎么做? (我想最好使用 Collectors.groupingBy )

最佳答案

这是一种方法:

public static <T,K> Map<K,Integer> mapper (
Collection<T> ts,
Function<T, K> classifier,
Function<T, Integer> evaluator,
Function<Integer,Integer> calculator)
{
return
ts.stream()
.collect(Collectors.groupingBy(classifier,
Collectors.summingInt(t->evaluator.andThen(calculator).apply(t))));
}

输出为:

System.out.println (mapper(Arrays.asList("a","a","bb"),Function.identity(),String::length,i->i*i));

{bb=4, a=2}

关于具有泛型的 Java 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55449976/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com