首页 > 其他分享 >集合转换工具类

集合转换工具类

时间:2024-01-27 16:58:03浏览次数:31  
标签:转换 source targetSupplier param callBack 集合 return 工具 null

import org.springframework.beans.BeanUtils;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.function.Supplier;

/**
 * 转换对象工具
 */
public class BeanConvertUtils extends BeanUtils {

    public static <S, T> T convertTo(S source, Supplier<T> targetSupplier) {
        return convertTo(source, targetSupplier, null);
    }

    /**
     * 转换对象
     *
     * @param source         源对象
     * @param targetSupplier 目标对象供应方
     * @param callBack       回调方法
     * @param <S>            源对象类型
     * @param <T>            目标对象类型
     * @return 目标对象
     */
    public static <S, T> T convertTo(S source, Supplier<T> targetSupplier, ConvertCallBack<S, T> callBack) {
        if (null == source || null == targetSupplier) {
            return null;
        }

        T target = targetSupplier.get();
        copyProperties(source, target);
        if (callBack != null) {
            callBack.callBack(source, target);
        }
        return target;
    }

    public static <S, T> List<T> convertListTo(List<S> sources, Supplier<T> targetSupplier) {
        return convertListTo(sources, targetSupplier, null);
    }

    /**
     * 转换对象
     *
     * @param sources        源对象list
     * @param targetSupplier 目标对象供应方
     * @param callBack       回调方法
     * @param <S>            源对象类型
     * @param <T>            目标对象类型
     * @return 目标对象list
     */
    public static <S, T> List<T> convertListTo(List<S> sources, Supplier<T> targetSupplier, ConvertCallBack<S, T> callBack) {
        if (null == sources || null == targetSupplier) {
            return Collections.emptyList();
        }

        List<T> list = new ArrayList<>(sources.size());
        for (S source : sources) {
            T target = targetSupplier.get();
            copyProperties(source, target);
            if (callBack != null) {
                callBack.callBack(source, target);
            }
            list.add(target);
        }
        return list;
    }

    /**
     * 回调接口
     *
     * @param <S> 源对象类型
     * @param <T> 目标对象类型
     */
    @FunctionalInterface
    public interface ConvertCallBack<S, T> {
        void callBack(S t, T s);
    }
}

使用示例:
 List<SysArticles> jobs = sysArticlesService.getJobs(cityName);
//参数一:要转换的集合 参数二:转换之后的返回值类型 List<WebArticlesResp> webArticlesResps = BeanConvertUtils.convertListTo(jobs, WebArticlesResp::new);

 





 

标签:转换,source,targetSupplier,param,callBack,集合,return,工具,null
From: https://www.cnblogs.com/liyongliangs/p/17991635

相关文章

  • Burp Suite Professional 2024.1.1 for macOS x64 & ARM64 (sysin) - 世界排名第一的
    BurpSuiteProfessional2024.1.1formacOSx64&ARM64(sysin)-世界排名第一的网络渗透测试工具包请访问原文链接:https://sysin.org/blog/burp-suite-pro-mac/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgBurpSuiteProfessionalTheworld’s#1webpenet......
  • Burp Suite Professional 2024.1.1 for Windows x64 (sysin) - 世界排名第一的网络渗
    BurpSuiteProfessional2024.1.1forWindowsx64(sysin)-世界排名第一的网络渗透测试工具包请访问原文链接:https://sysin.org/blog/burp-suite-pro-win/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgBurpSuiteProfessionalTheworld’s#1webpenetration......
  • 程序员必备!10款实用便捷的Git可视化管理工具
    前言俗话说得好“工欲善其事,必先利其器”,合理的选择和使用可视化的管理工具可以降低技术入门和使用的门槛。我们在团队开发中统一某个开发工具的使用能够大大降低沟通成本,提高协作沟通效率。今天给大家分享10款实用便捷的Git可视化管理工具,注意排名不分先后希望能对各位小伙伴有......
  • C# .NET 中 LINQ to Entities查询中使用时转换为数据库函数的CLR方法(EF.Functions)
    EF.Functions映射由于并非所有数据库函数都有等效的C#函数,因此EFCore提供程序提供了特殊的C#方法来调用某些数据库函数。这些方法通过EF.Functions定义为扩展方法来用于LINQ查询中。这些方法是特定于提供程序的,因为它们与特定数据库函数密切相关。因此,适用于某个......
  • 环境变量管理工具Modules的安装
    一、软件依赖tcl软件(1)tcl下载地址:http://www.tcl-lang.org/software/tcltk/(2)编译安装cdunix/./configure--prefix=/usr/local/tcl(aptinstalltcltcl-dev)二、编译安装modules软件(1)下载地址:  https://modules.sourceforge.net/(2)解压安装:(apt-getinstallenvironme......
  • RamMap物理内存分析工具
    RAMMap是一个用于在windows分析物理内存(PhysicalMemory)的工具。按F5刷新数据。 EmptyWorkingSets(清空工作集)EmptySystemWorkingSet(清空系统工作集)EmptyModifiedPageList(清空已修改的页列表)EmptyStandbyList(清空备份内存)EmptyPriority0StandbyList(清空优先......
  • [office] Excel怎么制作快速转换收支表
    很多人只用单列来管理收支金额数据,正数表示收入,负数表示支出,这样虽简洁但不方便计算。以下是小编为您带来的关于Excel快速转换收支表,希望对您有所帮助。Excel快速转换收支表我们要把它变成这个样子:下面就来说说过程。一、插入数据透视表单击数据区域的任意......
  • IPv6 在线测试工具推荐
    IPv6在线测试工具是一个IP协议检测工具,用于测试网站服务器是否支持IPv6协议。同时,检测工具还支持查询IPv6GeoIP地理位置信息。在输入要检测的域名或URL之后,检测工具发出DNS查找请求,获取来自DNS服务器的响应,并进行分析。同时,检测工具还会发出HTTPGET请求,获取来......
  • 快递分拣中心可视化系统:提升效率与准确率的革命性工具
    在快递行业飞速发展的今天,分拣中心作为物流链中的重要环节,其运作效率直接影响到整个物流体系的顺畅度。为了应对这一挑战,山海鲸可视化搭建了一个快递分拣中心可视化模型。  快递分拣中心可视化系统利用先进的技术手段,将分拣中心的各个环节进行实时监控与数据采集,并通过大屏......
  • [office] 为Excel的工具栏添加计算器功能按钮
    在用Excel编辑文档时,有时需要计算一些数据的数值(加减乘除都可能要用到),一般我们都是点击“开始→程序→附件”再点击“计算器”,如果每次都这样操作的话就很麻烦。其实我们可以将计算器直接添加在Excel的工具栏上,方法如下。打开Excel,点击视图菜单的“工具(T)”,然后点击“自定义(C)......