You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何将一类对象数组转换为字段名不同的另一类对象数组

Java不同类型对象数组的转换方案(基于Stream API)

前置准备

首先确保Thing类已经提供id、description字段的getter方法,Item类提供全参构造方法(或无参构造+code、data字段的setter方法)。

最简实现代码

import java.util.Arrays;

// 转换逻辑
Thing[] originalThings = ...; // 你的原始Thing数组
Item[] targetItems = Arrays.stream(originalThings)
        // 按照映射规则完成单个对象转换
        .map(thing -> new Item(thing.getId(), thing.getDescription()))
        // 转换为Item类型数组
        .toArray(Item[]::new);

逻辑说明

  • 第一步用Arrays.stream()将原对象数组转为Stream流
  • 第二步用map()中间操作完成单个对象的字段映射,把每个Thing对象的id赋值给Item的code、description赋值给Item的data
  • 第三步用toArray()传入Item数组的构造器引用,直接生成目标类型的数组

仅有无参构造的适配写法

如果你的Item类没有全参构造,只能通过无参构造+setter赋值,把map部分改写为如下形式即可:

.map(thing -> {
    Item item = new Item();
    item.setCode(thing.getId());
    item.setData(thing.getDescription());
    return item;
})

扩展说明

如果项目中有大量类似的不同类对象转换场景,也可以引入MapStruct这类编译期映射工具,自动生成转换代码,避免手动编写大量重复的映射逻辑;如果只是单次简单转换,直接用上述Stream方案即可,无需引入额外依赖。

内容的提问来源于stack exchange,提问作者Woodchuck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 12:36:04