Java 对象转换成带有索引的对象工具类

Java 对象转换成带有索引的对象工具类,第1张

在 *** 作集合对象时很多场景需要遍历集合,为了方便包装了一下,供参考和记录

工具类核心源码
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);

没有太多天分和履历的本分程序猿最终会有归宿吗

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/917367.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-16
下一篇2022-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存