用Lambda武装你的Java: 集合转换

发布时间:2019-11-17 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了用Lambda武装你的Java: 集合转换脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

网上介绍Java 8 lambda和集合新特性的代码太千篇一律了,我来提供些不一样的。虽然很简单,但也是工业级代码,不是网上抄来抄去的教学代码。权当给大家提供一个思路。

你想把Collection<T>转换成Collection<R>或者复制、合并、排序,你可以用Java 8的stream API,但我觉得书写起来太繁(每次都要import Collectors, 再写上Collectors.toXXX),你可以用以下这个工具类来做。

Collection<T> elements1 = ..., elements2 = ...;  Collection<R> rs = Colls.map(elements, t->new R(t)); // 或者 Colls.map(elements, R::new);  Collection<T> allElements = Colls.copy(elements1, elements2); Collection<T> sortedElements = Colls.copySort(comparator, elements1, elements2); 

Colls实现如下:

import java.util.*; import java.util.function.Function;  public abstract class Colls {   public static <T, R> List<R> map(Collection<T> coll, Function<T, R> transformer) {     List<R> result = new ArrayList<>(coll.size());     for (T t : coll) {       result.add(transformer.apply(t));     }     return result;   }    @SafeVarargs   public static <T> List<T> copy(Collection<T>... colls) {     List<T> list = new ArrayList<>();     for (Collection<T> coll : colls) {       list.addAll(coll);     }     return list;   }    @SafeVarargs   public static <T> List<T> copySort(Comparator<T> comparator, Collection<T>... colls) {     List<T> list = copy(colls);     Collections.sort(list, comparator);     return list;   } } 

它的实现没有使用stream API,因为stream是一种强大到能延迟处理和并行处理的API,我们简单的集合操作不需要这么高级的能力。

目前只写了三个方法,如果有需求,还可以扩充更多的方法。

脚本宝典总结

以上是脚本宝典为你收集整理的用Lambda武装你的Java: 集合转换全部内容,希望文章能够帮你解决用Lambda武装你的Java: 集合转换所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。