Java8中Lambda表达式应用及泛型相关(2)

lambda表达式恰恰只表现出我们所关心的,参数和返回值,同时由于类型推断,可以省去参数类型,具体语法这里就不介绍了,网上可以查到很多资料

extra:

如果你对泛型有不错的了解的话,方法groupByKey还可以进一步抽象:

public static <K, E> Map<K, List<E>> groupBy(List<? extends E> data, Function<? super E, ? extends K> fun) {

Map<K, List<E>> result = new HashMap<>();

for(E e : data) {

K k = fun.apply(e);<br>        List<E> l = result.get(k);

if(l == null) {

l = new ArrayList<>();

result.put(k, l);

}

l.add(e);

}

return result;<br>}

我们将Employee这个类也抽取了,好处显而易见

Function接口是java8新加入的接口:

@FunctionalInterface

public interface Function<T, R> {

R apply(T t);

}

输入一个T类型 返回R类型。泛型和函数式编程结合的很不错,虽然java8的新特性被各种吐槽,但是能带来好处总是好的,这给了我们更多的选择。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b3d8fb59159e83e71704c77b68ee027e.html