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

Java中如何将对象列表的各属性值转换为单元素独立数组

Java对象属性提取为单元素数组集合实现方案

前置说明

你需要处理的原始Java对象集合,对应有固定的三个字段:id(数值型)、age(数值型)、name(字符串型),最终目标是按每个对象的属性顺序,把每个字段值单独封装为长度为1的数组,组成最终的结果集合,输出效果和需求示例完全匹配。

实现步骤

1. 定义对应实体类

日常开发中这批Java对象一般是明确的实体实例,可以直接用Lombok简化冗余的getter、构造器代码:

@Data
@AllArgsConstructor
public class Person {
    private Integer id;
    private Integer age;
    private String name;
}

2. 核心转换逻辑

整体逻辑非常直接,不需要复杂的反射或者第三方工具:

  • 遍历对象集合中的每一个实例
  • 对单个实例,按id→age→name的顺序依次取出属性值
  • 每取出一个属性值,就将其封装为长度为1的数组,加入最终结果集

纯JDK原生遍历写法

兼容所有Java版本,逻辑最直观:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class TransformUtil {
    public static void main(String[] args) {
        // 构造和示例完全一致的原始对象集合
        List<Person> personList = Arrays.asList(
                new Person(1, 34, "abc"),
                new Person(2, 34, "xyz"),
                new Person(3, 34, "mno")
        );

        List<Object[]> result = new ArrayList<>();
        for (Person person : personList) {
            // 依次提取每个属性,封装为单元素数组
            result.add(new Object[]{person.getId()});
            result.add(new Object[]{person.getAge()});
            result.add(new Object[]{person.getName()});
        }

        // 输出验证,结果完全匹配要求的格式
        for (int i = 0; i < result.size(); i++) {
            System.out.print(Arrays.toString(result.get(i)) + ", ");
            // 每3个元素换行,和示例排版一致
            if ((i + 1) % 3 == 0) {
                System.out.println();
            }
        }
    }
}

Java 8+ Stream简化写法

如果项目用的是Java 8及以上版本,可以用Stream链式调用简化遍历代码:

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

// 接上面的personList构造代码
List<Object[]> result = personList.stream()
        // 每个对象拆分为3个单元素数组
        .flatMap(person -> Stream.of(
                new Object[]{person.getId()},
                new Object[]{person.getAge()},
                new Object[]{person.getName()}
        ))
        .collect(Collectors.toList());

注意事项

  • 属性顺序要和需求对齐:提取时别打乱id、age、name的先后顺序,否则最终输出的排版会和要求不符
  • 格式适配:如果需要输出的字符串属性带双引号(比如示例里的"abc"),可以在封装数组时手动给字符串值加上转义双引号即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 03:24:03