Java的泛型流

山高:

我有一个接受的通用功能Collection<? extends T> ts

我还通过:

Function<? extends T, ? extends K> classifier其中每个项目映射T到一个键K(可能有重复)

Function<? extends T, Integer> evaluator 这给该项目的整数值。

该函数本身有一个内置的计算(” int to int“),对每个生产Integer(可能是像平方在我们的例子)

最后,我想总结的所有值的每个关键。

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

例如,
假设我们有列表["a","a", "bb"]和我们使用Function.identity进行分类,String::length评估和平方的内置功能。然后返回的地图将是:{"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}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章