package com.test.utils;
import com.test.dto.Test;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.TreeSet;
import java.util.function.Function;
import java.util.stream.Collectors;
import org.apache.commons.collections.MapUtils;
/**
-
yanhua0
*/
public class StreamListUtils {/**
- list转list
- @param list 集合对象
- @param function 转化的具体字段
- @param
- @param
- @return
*/
public static <T,O> List toList(List list, Function<O,T> function){
return list.stream().map(function).collect(Collectors.toList());
}
/**
- list分组
- @param list 集合对象
- @param function 分组实现
- @param
- @param
- @return
*/
public static <T,O> Map<T,List> group(List list, Function<O,T> function){
return list.stream().collect(Collectors.groupingBy(function));
}
/**
- list转map
- @param list
- @param function1
- @param function2
- @param
- @param
- @param
- @return
*/
public static <T,O,K> Map<T,K> toMap(List list, Function<O,T> function1,Function<O,K> function2){
return list.stream().collect(Collectors.toMap(function1,function2,(o,n)->n));
}
/**
*- @param list 集合对象
- @param distinctFields 去重的字段名
- @return
*/
public static List<Map<String, Object>> distinct(List<Map<String, Object>> list, List distinctFields) {
return list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()
-> new TreeSet<>((o1, o2) -> {
for (String s1 : distinctFields) {
Object o1F = MapUtils.getObject(o1, s1);
Object o2F = MapUtils.getObject(o2, s1);
if (!Objects.equals(o1F, o2F)) {
return 1;
}
}
return 0;
})), ArrayList::new));
}
public static void main(String[] args) {
List testList=new ArrayList<>();
List s=toList(testList,Test::getStr);
toList(s)
}
}