List集合格式转换

最近遇到一个任务:

需要把A集合数据转成 B集合的形式:

A集合:

B集合:

代码:

package com.example.juc.test;import com.example.juc.entity.Ld;
import com.example.juc.entity.Student;import java.lang.reflect.Field;
import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.Consumer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** @Author * @Date Created in  2023/12/26 14:43* @DESCRIPTION:* @Version V1.0*/public class 测试行转列 {private static final Map<String, String> SFID_MAPPING = new HashMap<>();// 初始化映射关系static {SFID_MAPPING.put("ywjbrmc", "1");SFID_MAPPING.put("ywfgld", "2");SFID_MAPPING.put("ywzzld", "3");SFID_MAPPING.put("fgxld", "4");SFID_MAPPING.put("zyxld", "5");}public static void main(String[] args) {List<Ld> list = new CopyOnWriteArrayList<>();list.add(new Ld( "龙德(longyd3)", "夏天(longyd3)", "黄美(hyanm)", "王雄(wgx)", "黄美(hyanm)"));list.add(new Ld( "", "", "王国雄(wgx),黄美(hanm),龙永德(longyd3)", "", ""));list.add(new Ld( "", "", "", "黄美(hanm)", ""));list.add(new Ld("", "", "", "", "黄美(hanm)"));list.add(new Ld("", "", "", "", "黄燕美(hanm)"));List<Student> okList = new ArrayList<>();//遍历第一个集合for (Ld ld : list) {// 在这里处理 ld 对象// 使用反射获取所有字段Field[] fields = Ld.class.getDeclaredFields();String id  = UUID.randomUUID().toString();for (Field field : fields) {// 设置可访问,因为字段可能是 private 的field.setAccessible(true);try {Object value = field.get(ld);HashMap<String, Object> map = new HashMap<>(16);if (value != null && !value.toString().isEmpty()) {Student student = new Student();String name = field.getName();map.put(name,value);student.setPzryId(id);student.setNetId(map.get(name).toString());// 使用映射设置 sfidString sFid = SFID_MAPPING.get(name);if (sFid != null) {student.setSfid(sFid);}okList.add(student);}} catch (IllegalAccessException e) {e.printStackTrace();}}}List<Student> updateList = new CopyOnWriteArrayList<>();List<Student> errorList = new CopyOnWriteArrayList<>();System.out.println("====================原本转好的集合============================");for (Student stu : okList){
//String netId = stu.getNetId();String regex = "^[^()]+\\([^()]+\\)$";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(netId);// 如果不符合格式,则打印该 Student 对象if (!matcher.matches()) {errorList.add(stu);String[] split = stu.getNetId().split(",");for (int i = 0; i < split.length; i++) {Student student = new Student();student.setPzryId(stu.getPzryId());student.setNetId(split[i]);student.setSfid(stu.getSfid());updateList.add(student);}}System.out.println(stu);}System.out.println("--------------------------修改后的数据-------------------------------------");for (Student s : updateList){System.out.println(s);}okList.addAll(updateList);System.out.println("--------------------------不符合规则的数据-------------------------------------");for (Student s : errorList){System.out.println(s);}okList.removeAll(errorList);System.out.println("--------------------最后的数据------------------------------------");for (Student s : okList){System.out.println(s);}}
}

打印结果:

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

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

相关文章

双指针刷题(二)

所有算法文章链接&#xff08;最底部&#xff09; http://t.csdnimg.cn/IbllR 目录 1.快乐数 分析题意 解题思路 代码实现 2.盛最多水的容器 分析题意 解题思路 代码实现 1.快乐数 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 分析题意…

有了向量数据库,我们还需 SQL 数据库吗?

“除了向量数据库外&#xff0c;我是否还需要一个普通的 SQL 数据库&#xff1f;” 这是我们经常被问到的一个问题。如果除了向量数据以外&#xff0c;用户还有其他标量数据信息&#xff0c;那么其业务可能需要在进行语义相似性搜索前先根据某种条件过滤数据&#xff0c;例如&a…

初始Web服务器

一、web服务器 1、什么是web服务器&#xff1f; web服务器就是web项目的容器&#xff0c;我们将开发好的web项目部署到web容器中&#xff0c;才能使用网络中的用户通过浏览器进行访问。 一张图带你了解web服务器有啥作用&#xff1a; 在我的电脑上有一个已经做好的项目&#…

【Java基础系列】body参数前后端不一致

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

计算机毕业设计 基于SpringBoot的高校竞赛管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

Generalized Focal Loss V1论文解读

摘要 单级检测器基本上将物体检测表述为密集分类和定位&#xff08;即边界框回归&#xff09;。分类通常通过Focal Loss进行优化&#xff0c;而边界框的定位通常根据Dirac delta分布进行学习。单级检测器的最新趋势是引入一个单独的预测分支来估计定位质量&#xff0c;预测质量…

万字长文谈自动驾驶occupancy感知

文章目录 prologuepaper listVision-based occupancy :1. [MonoScene: Monocular 3D Semantic Scene Completion [CVPR 2022]](https://arxiv.org/pdf/2112.00726.pdf)2. [Tri-Perspective View for Vision-Based 3D Semantic Occupancy Prediction [CVPR 2023]](https://arxiv…

小信跳房子的题解

原题描述&#xff1a; 时间&#xff1a;1s 空间&#xff1a;256M 题目描述&#xff1a; 小信在玩跳房子游戏&#xff0c;已知跳房子游戏的图表现为一颗完美的具有个节点的二叉树。从根节点依次编号为。节点的左子节点编号为&#xff0c;右子节点编号为。 小信从从节点出发&…

立体匹配算法(Stereo correspondence)SGM

SGM(Semi-Global Matching)原理&#xff1a; SGM的原理在wiki百科和matlab官网上有比较详细的解释&#xff1a; wiki matlab 如果想完全了解原理还是建议看原论文 paper&#xff08;我就不看了&#xff0c;懒癌犯了。&#xff09; 优质论文解读和代码实现 一位大神自己用c实现…

【算法】数论---约数

约数里面的一个重要性质&#xff1a;一个数的约数都是成对存在的(以sqrt(x)为分界线) 一、求一个数的所有约数---试除法 int x; cin>>x; int yue[10000]{0},idx0; for(int i1;i<x/i;i) {if(x%i0){yue[idx]i;cout<<i<<" ";} }for(int iidx-1;i&…

Java 8 中的 Stream 轻松遍历树形结构!

可能平常会遇到一些需求&#xff0c;比如构建菜单&#xff0c;构建树形结构&#xff0c;数据库一般就使用父id来表示&#xff0c;为了降低数据库的查询压力&#xff0c;我们可以使用Java8中的Stream流一次性把数据查出来&#xff0c;然后通过流式处理&#xff0c;我们一起来看看…

八个理由:从java8升级到Java17

目录 前言 1. 局部变量类型推断 2.switch表达式 3.文本块 4.Records 5.模式匹配instanceof 6. 密封类 7. HttpClient 8.性能和内存管理能力提高 前言 从Java 8 到 Java 20&#xff0c;Java 已经走过了漫长的道路&#xff0c;自 Java 8 以来&#xff0c;Java 生态系统…