Java中如何将集合对象的Map属性赋值给另一个集合对象
问题描述
需要为BeanA类生成如下JSON输出:
[{ "name": "name1", "beanMap": { "custom_column": "custom_value1" } }, { "name": "name2", "beanMap": { "custom_column": "custom_value2" } } ]
已实现从EntityA创建对应的Map,但不清楚如何将每个Map值设置到另一个集合中的BeanA对象里。当前代码中仅遍历EntityA生成了Map,未将其关联到对应的BeanA实例。
解决方案
方式1:匹配已初始化的BeanA列表
如果需要保留提前初始化的beanAs列表,可以通过name字段匹配EntityA和BeanA,将生成的Map赋值给BeanA的beanMap属性:
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class CopyMapAttributeToPojo { public static void main(String[] args) { List<EntityA> entityAs = new ArrayList<>(); EntityA entityA1 = new EntityA(); entityA1.setName("name1"); entityA1.setCustom_column("custom_value1"); EntityA entityA2 = new EntityA(); entityA2.setName("name2"); entityA2.setCustom_column("custom_value2"); entityAs.add(entityA1); entityAs.add(entityA2); List<BeanA> beanAs = new ArrayList<>(); BeanA beanA1 = new BeanA(); beanA1.setName("name1"); BeanA beanA2 = new BeanA(); beanA2.setName("name2"); beanAs.add(beanA1); beanAs.add(beanA2); // 遍历EntityA,匹配对应BeanA并设置beanMap for (EntityA entity : entityAs) { Map<String, Object> beanMap = new HashMap<>(); beanMap.put("custom_column", entity.getCustom_column()); // 根据name匹配BeanA for (BeanA bean : beanAs) { if (entity.getName().equals(bean.getName())) { bean.setBeanMap(beanMap); break; } } } // 可选:序列化BeanA列表为JSON(需引入Jackson库) /* ObjectMapper mapper = new ObjectMapper(); try { String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(beanAs); System.out.println(json); } catch (JsonProcessingException e) { e.printStackTrace(); } */ } } class EntityA { private String name; private String custom_column; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCustom_column() { return custom_column; } public void setCustom_column(String custom_column) { this.custom_column = custom_column; } } class BeanA { private String name; private Map<String, Object> beanMap; public String getName() { return name; } public void setName(String name) { this.name = name; } public Map<String, Object> getBeanMap() { return beanMap; } public void setBeanMap(Map<String, Object> beanMap) { this.beanMap = beanMap; } }
方式2:直接创建BeanA列表(更简洁高效)
无需提前初始化beanAs,直接遍历EntityA列表创建对应的BeanA实例并设置属性,避免匹配操作,代码更简洁:
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class CopyMapAttributeToPojo { public static void main(String[] args) { List<EntityA> entityAs = new ArrayList<>(); EntityA entityA1 = new EntityA(); entityA1.setName("name1"); entityA1.setCustom_column("custom_value1"); EntityA entityA2 = new EntityA(); entityA2.setName("name2"); entityA2.setCustom_column("custom_value2"); entityAs.add(entityA1); entityAs.add(entityA2); List<BeanA> beanAs = new ArrayList<>(); // 遍历EntityA直接创建BeanA并赋值 for (EntityA entity : entityAs) { BeanA bean = new BeanA(); bean.setName(entity.getName()); Map<String, Object> beanMap = new HashMap<>(); beanMap.put("custom_column", entity.getCustom_column()); bean.setBeanMap(beanMap); beanAs.add(bean); } // 可选:序列化BeanA列表为JSON(需引入Jackson库) /* ObjectMapper mapper = new ObjectMapper(); try { String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(beanAs); System.out.println(json); } catch (JsonProcessingException e) { e.printStackTrace(); } */ } } // EntityA和BeanA类定义同前
生成JSON输出
若要将beanAs序列化为目标JSON,需引入Jackson库(Maven依赖):
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.15.2</version> </dependency>
启用代码中注释的序列化部分即可得到目标JSON。
内容的提问来源于stack exchange,提问作者Mohit224
相关产品推荐
相关产品推荐

