工做中操做List對於程序猿來講是"基本操做",爲了更加便利,對JDK8的新特性stream流進行二次封裝.話很少說,直接上代碼java
package com.mydemo; import org.apache.commons.collections.CollectionUtils; import java.util.Comparator; import java.util.List; import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.Collectors; /** * JDK8 stream流操做工具類 * @author Jozz */ public class StreamUtils { /** * 映射 * @param data 不能爲空 * @param fun * @param <T> * @param <R> * @return data爲空拋出異常IllegalArgumentException */ public static <T,R> List<R> map(List<T> data, Function<T,R> fun){ if (CollectionUtils.isEmpty(data)){ throw new IllegalArgumentException(); } return data.stream().map(fun).collect(Collectors.toList()); } /** * 過濾 * @param data * @param pre * @param <T> * @return data爲空返回data */ public static <T> List<T> filter(List<T> data, Predicate<T> pre){ if (CollectionUtils.isEmpty(data)){ return data; } return data.stream().filter(pre).collect(Collectors.toList()); } /** * 排序 * @param data * @param comparator * @param <T> * @return data爲空返回data */ public static <T> List<T> sorted(List<T> data, Comparator<T> comparator){ if (CollectionUtils.isEmpty(data)){ return data; } return data.stream().sorted(comparator).collect(Collectors.toList()); } /** * 去重 * @param data * @param <T> * @return data爲空返回data */ public static <T> List<T> distinct(List<T> data){ if (CollectionUtils.isEmpty(data)){ return data; } return data.stream().distinct().collect(Collectors.toList()); } /** * 判斷是否包含匹配元素 * @param data * @param pre * @param <T> * @return data爲空返回false */ public static <T> boolean anyMatch(List<T> data, Predicate<T> pre){ if (CollectionUtils.isEmpty(data)){ return false; } return data.parallelStream().anyMatch(pre); } /** * 將list進行join操做 * @param data * @param join * @return 返回join以後的字符串,data爲空返回null */ public static String join(List<String> data,String join){ if (CollectionUtils.isEmpty(data)){ return null; } return data.stream().collect(Collectors.joining(join == null ? "" : join)); } }