
工具类核心源码在 *** 作集合对象时很多场景需要遍历集合,为了方便包装了一下,供参考和记录
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @describe : 对象转换成带有索引的对象工具类
* @author:reoverflow@qq.com
* @date:2021/12/17
*/
public final class BeanIndexUtil {
/**
* 转换成带有主键映射的集合(一对多)
*/
public static<E,R> Map<R, List<E>> createIndexListById(List<E> objectItemList, Function<E, R> idFun) {
return objectItemList.stream().collect(Collectors.toMap(idFun,
p -> {
List<E> getObjectItemTempList = new ArrayList<>();
getObjectItemTempList.add(p);
return getObjectItemTempList;
},
(List<E> value1, List<E> value2) -> {
value1.addAll(value2);
return value1;
}
));
}
/**
* 转换成带有主键映射的集合(一对一)
*/
public static<E,R> Map<R,E> createIndexById(List<E> objectItemList, Function<E, R> idFun) {
return objectItemList.stream().collect(Collectors.toMap(idFun, objItem -> objItem));
}
/**
* 获取索引集合
*/
public static<E,R> List<R> getIndexById(List<E> objectItemList, Function<E, R> idFun) {
return objectItemList.stream().map(idFun).distinct().collect(Collectors.toList());
}
}
举栗子
Map<String, List<XxxInfo>> xxxItemMapByType = BeanIndexUtil.createIndexListById(xxxItems, XxxInfo::getXxxxIdType);
Map<Long, XxxxVo> xxxMap = BeanIndexUtil.createIndexById(xxxList, XxxVo::getId);
List<Long> xxxxIds = BeanIndexUtil.getIndexById(xxxList, XxxInfo::getId);
没有太多天分和履历的本分程序猿最终会有归宿吗
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)