Java工具类

package org.common;import lombok.extern.slf4j.Slf4j;import java.util.*;
import java.util.stream.Collectors;@Slf4j
public final class CollectorHelper {/*** @param element* @param propertyName* @param <E>* @return*/public static <E> List toList(Collection<E> element, String propertyName) {if (element == null) {return Collections.emptyList();}return element.stream().map(item -> {return ReflectCallField.getForInstance(item, propertyName);}).collect(Collectors.toList());}/*** @param element* @param propertyName* @param <E>* @return*/public static <E> List extractList(Collection<E> element, String propertyName) {if (element == null) {return Collections.emptyList();}List dataList = new ArrayList();for (E item : element) {Object obj = ReflectCallField.getForInstance(item, propertyName);if (obj != null) {dataList.add(obj);}}return dataList;}/*** @param element* @param propertyName* @param <K>* @param <V>* @return*/public static <K, V> Map<K, V> toMap(Collection<V> element, String propertyName) {if (element == null) {return Collections.emptyMap();}try {return (Map<K, V>) element.stream().collect(Collectors.toMap(item -> {return ReflectCallField.getForInstance(item, propertyName);}, item -> item));} catch (Exception e) {log.error(e.getMessage());}return Collections.emptyMap();}/*** @param element* @param propertyName* @param <K>* @param <V>* @return*/public static <K, V> Map<K, V> extractMap(Collection<V> element, String propertyName) {if (element == null) {return Collections.emptyMap();}Map<K, V> dataMap = new HashMap();for (V item : element) {Object key = ReflectCallField.getForInstance(item, propertyName);if (key != null) {dataMap.put((K) key, item);}}return dataMap;}}
package org.common;import java.lang.reflect.Field;public class ReflectCallField {/*** @param entryClass* @param fieldName* @param <T>* @return*/public static <T> T getForStatic(Class entryClass, String fieldName) {if (entryClass == null) {return null;}T result = null;try {// 反射获取Field callField = entryClass.getDeclaredField(fieldName);callField.setAccessible(true);return (T) callField.get(entryClass);} catch (Exception e) {e.printStackTrace();}return result;}/*** @param entryClass* @param fieldName* @param value*/public static void setForStatic(Class entryClass, String fieldName, Object value) {if (entryClass == null) {return;}try {Field callField = entryClass.getDeclaredField(fieldName);callField.setAccessible(true);callField.set(fieldName, value);} catch (Exception e) {e.printStackTrace();}}/*** @param entryObject* @param fieldName* @param <T>* @return*/public static <T> T getForInstance(Object entryObject, String fieldName) {if (entryObject == null) {return null;}T result = null;try {// 反射获取Field callField = entryObject.getClass().getDeclaredField(fieldName);callField.setAccessible(true);return (T) callField.get(entryObject);} catch (Exception e) {e.printStackTrace();}return result;}/*** @param entryObject* @param fieldName* @param value*/public static void setForInstance(Object entryObject, String fieldName, Object value) {if (entryObject == null) {return;}try {Field callField = entryObject.getClass().getDeclaredField(fieldName);callField.setAccessible(true);callField.set(entryObject, value);} catch (Exception e) {e.printStackTrace();}}}

测试

package org.common;import lombok.Data;@Data
public class Franchisee {private Integer id;private String name;}
package org.common;import java.util.ArrayList;
import java.util.List;
import java.util.Map;public class CollectorHelperTest {public static void main(String[] args) {List<Franchisee> dataList = new ArrayList<>();Franchisee franchisee1 = new Franchisee();franchisee1.setId(1);franchisee1.setName("Franchisee1");dataList.add(franchisee1);Franchisee franchisee2 = new Franchisee();franchisee2.setId(2);franchisee2.setName("Franchisee2");dataList.add(franchisee2);Franchisee franchisee3 = new Franchisee();franchisee3.setName("Franchisee3");dataList.add(franchisee3);Franchisee franchisee4 = new Franchisee();franchisee4.setName("Franchisee4");dataList.add(franchisee4);//Map<Integer, Franchisee> dataMap = CollectorHelper.toMap(dataList, "id");System.out.println("dataMap = " + dataMap);Map<Integer, Franchisee> dataMap2 = CollectorHelper.extractMap(dataList, "id");System.out.println("dataMap2 = " + dataMap2);//List<Integer> idList = CollectorHelper.toList(dataList, "id");System.out.println("idList = " + idList);idList.forEach(id -> {System.out.println("id = " + id);});List<Integer> idList2 = CollectorHelper.extractList(dataList, "id");System.out.println("idList2 = " + idList2);idList2.forEach(id -> {System.out.println("id = " + id);});}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/88108.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/88108.shtml
英文地址,请注明出处:http://en.pswp.cn/web/88108.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ATE FT ChangeKit学习总结-20250630

目录 一、基本概念 二、主要特点 三、BOM LIST Shuttle Hot Plate Dock Plate Contactor 四、设计要点 五、参考文献与链接 一、基本概念 Change Kit在半导体封装测试领域中是一个重要的组件,它作为Handler(自动化分类机)的配套治具,在芯片测试过程中发挥着关键作…

【网络协议安全】任务14:路由器DHCP_AAA_TELNET配置

本文档将详细介绍在华为 eNSP 仿真环境中&#xff0c;实现路由器 DHCP 服务器功能、AAA 认证以及 TELNET 远程登录配置的完整步骤&#xff0c;适用于华为 VRP 系统路由器。 一、配置目标 路由器作为 DHCP 服务器&#xff0c;为局域网内的设备自动分配 IP 地址、子网掩码、网关…

深度探索:现代翻译技术的核心算法与实践(第一篇)

引言:翻译技术的演进之路 从早期的基于规则的机器翻译(RBMT)到统计机器翻译(SMT),再到如今主导行业的神经机器翻译(NMT),翻译技术已经走过了漫长的发展道路。现代翻译系统不仅能够处理简单的句子,还能理解上下文、识别领域术语,甚至捕捉微妙的文化差异。 本系列文章将带…

玩转Docker | 使用Docker部署NotepadMX笔记应用程序

玩转Docker | 使用Docker部署NotepadMX笔记应用程序 前言一、NotepadMX介绍工具简介主要特点二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署NotepadMX服务下载NotepadMX镜像编辑部署文件创建容器检查容器状态检查服务端口安全设置四、访问NotepadMX服务访…

Web前端:not(否定伪类选择器)

not&#xff08;否定伪类选择器&#xff09;CSS中的 :not() 选择器是⼀个否定伪类选择器&#xff0c;它⽤于选择不符合给定选择器的元素。这是⼀种排除特定元素的⽅法&#xff0c;可以⽤来简 化复杂的选择器&#xff0c;提⾼ CSS 规则的灵活性和精确性。:not() 选择器的基本语法…

【BTC】比特币网络

目录 一、比特币网络架构 1.1 节点加入与离开 二、消息传播方式 三、交易处理机制 四、网络传播问题 五、实际应用问题及解决 本章节讲比特币网络的工作原理&#xff0c;讲解新创建的区块是如何在比特币网络中传播的。 一、比特币网络架构 比特币工作在应用层&#xff…

Clickhouse 的历史发展过程

20.5.3 开始支持多线程20.6.3 支持explainmysql 20.8 实时同步mysql&#x1f4cc; ‌一、早期版本阶段&#xff08;1.1.x系列&#xff09;‌‌版本范围‌&#xff1a;1.1.54245&#xff08;2017-07&#xff09;→ 1.1.54394&#xff08;2018-07&#xff09;‌核心特性‌&#x…

玩转n8n工作流教程(一):Windows系统本地部署n8n自动化工作流(n8n中文汉化)

在Windows系统下使用 Docker 本地部署N8N中文版的具体操作&#xff0c;进行了详尽阐述&#xff0c;玩转n8n工作流教程系列内容旨在手把手助力从0开始一步一步深入学习n8n工作流。想研究n8n工作流自动化的小伙伴们可以加个关注一起学起来。后续也会持续分享n8n自动化工作流各种玩…

mini-program01の系统认识微信小程序开发

一、官方下载并安装 1、下载&#xff08;I选了稳定版&#xff09; https://developers.weixin.qq.com/miniprogram/dev/devtools/download.htmlhttps://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 2、安装&#xff08;A FEW MOMENT LATER&#xff09;…

如何将 Java 项目打包为可执行 JAR 文件

如何将 Java 项目打包为可执行 JAR 文件我将详细介绍将 Java 项目打包为可执行 JAR 文件的完整流程&#xff0c;包括使用 IDE 和命令行两种方法。方法一&#xff1a;使用 IntelliJ IDEA 打包步骤 1&#xff1a;配置项目结构打开项目点击 File > Project Structure在 Project…

【Starrocks 异常解决】-- mysql flink sync to starrocks row error

1、异常信息 flink 1.20 starrocks 3.3.0 mysql 8.0 errorLog: Error: Target column count: 35 doesnt match source value column count: 28. Column separator: \t, Row delimiter: \n. Row: 2025-05-22 6 23400055 214 dssd 1 1 1928 mm2er 360 20000.00000000 1…

Jenkins 使用宿主机的Docker

背景&#xff1a;不想在Jenkins 内部安装Docker,想直接使用Jenkins服务所在的系统安装的docker当你在 Jenkins 中执行 docker 命令时&#xff0c;实际上是通过 Docker 客户端与 Docker 守护进程进行通信。Docker 客户端和守护进程之间的通信是通过一个名为 /var/run/docker.soc…

工具+服务双驱动:创客匠人打造中医IP差异化竞争力

一、技术工具场景化定制&#xff1a;中医专业的可视化破圈在中医IP同质化严重的行业现状下&#xff0c;创客匠人以场景化技术工具破解专业传播难题。系统内置的“体质测试”模块可生成个性化调理报告&#xff0c;“案例库”支持前后对比图上传&#xff0c;“直播问诊”自动添加…

JVM对象分配内存如何保证线程安全?

大家好&#xff0c;我是锋哥。今天分享关于【JVM对象分配内存如何保证线程安全&#xff1f;】面试题。希望对大家有帮助&#xff1b; JVM对象分配内存如何保证线程安全&#xff1f; 超硬核AI学习资料&#xff0c;现在永久免费了&#xff01; 在Java中&#xff0c;JVM&#xf…

机器学习中的数据对齐

文章目录前言数据集怎么理解数据数据对齐为什么偏偏是这样对齐&#xff1f;前言 在神经网络中&#xff0c;我们往往会根据数据集构建训练集、测试集&#xff0c;有时会有验证集。但是&#xff0c;在构建完成后&#xff0c;如果直接将这些数据直接扔进模型训练&#xff0c;输入…

机器学习:更多分类回归算法之决策树、SVM、KNN

下面介绍的这几种算法&#xff0c;既能用于回归问题又能用于分类问题&#xff0c;接下来了解下吧。 决策树 可参考&#xff1a; 决策树&#xff08;Decision Tree&#xff09; | 菜鸟教程 决策树&#xff08;Decision Tree&#xff09;是一种常用的监督学习算法&#xff0c;可用…

Vue 整合 Vue Flow:从零构建交互式流程图

目录引言目的适用场景环境准备基础组件 (index.vue)自定义组件 (矩形、菱形等)RectangleNode.vue (矩形节点)&#xff1a;DiamondNode.vue (菱形节点)&#xff1a;ImageNode(自定义图片节点):操作实现 (#操作实现) 拖拽节点 (#拖拽节点) 连线 (多连接点) 删除节点 …

C# WPF - Prism 学习篇:搭建项目(一)

一、前期准备开发工具&#xff1a;Visual Studio 2022二、创建项目1、创建WPF 应用“WpfApp.StudyDemo”&#xff1a;2、项目结构如下&#xff1a; 三、安装 Prism1、选中项目“WpfApp.PrismDemo”&#xff0c;在右键菜单中选择“管理 NuGet 程序包(N)...”。2、在搜索框中输入…

单片机 基于rt-thread 系统 使用 CCM内存

一、开发环境 开发板&#xff1a;野火stm32f407 系统&#xff1a;rt-thread V4.1.1 二、链接脚本配置 ; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; ****************************…

【UnityAssetBundle】AB包卸载资源

AB包的卸载高效稳定游戏开发的强制要求&#xff0c;它解决了资源管理中的内存泄漏问题&#xff0c;为动态的内容加载、热更新、大型世界的构建提供了内存保障&#xff0c;最终提升了游戏性能、稳定性和用户体验。卸载资源方式一&#xff08;推荐使用&#xff09;&#xff1a;卸…