【问题标题】:Convert List<Object[]> Array into an object将 List<Object[]> 数组转换为对象
【发布时间】:2018-06-08 17:29:01
【问题描述】:

基本上我有以下代码:

List<Object[]> tes = new ArrayList<>();
        Object[] ar1 = {"John","Cena","2347867686"};
        Object[] ar2 = {"Peter","Smith","978787878"};
        tes.add(ar1);
        tes.add(ar2);

我有如下 PersonDto 类:

public class PersonDto {

    String name;
    String surname;
    String phone;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSurname() {
        return surname;
    }

    public void setSurname(String surname) {
        this.surname = surname;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

}

这就是我正在尝试的:

for (Object[] object : tes) {

            TestDto testDto = new TestDto();
            for (Object object2 : object) {

                System.out.println(object2);

            }

            System.out.println("second");

        }

但我不知道何时在 for 循环中设置姓氏、姓名或电话。 所以基本上我试图将每个数组映射到列表中的 PersonDto,如下所示:

所以预期的结果是:

  1. 第一个人 (PersonDto) 的姓名将设置为 John,姓氏设置为 Cena,并且 电话设置为2347867686。
  2. 第二个人 (PersonDto) 的名字设置为 Peter,姓氏设置为 Smith 电话设置为 978787878。

列表中可以有许多数组,每个数组总是有三个属性(姓名、姓氏、电话)。

【问题讨论】:

  • 你自己尝试过什么吗?
  • 要么编写一个构造函数,将namesurnamephone 作为参数并将this 中的值设置为关联的值,要么创建对象然后调用它们设置器(但首选第一种方式)

标签: java arrays arraylist


【解决方案1】:

如果你的 PersonDto 有一个构造函数会容易得多:

PersonDto(String name, String surname, String phone) {
    this.name = name;
    this.surname = surname;
    this.phone = phone;
}

那么,就这么称呼吧:

List<PersonDTO> =
    objets.stream()
          .map(arr -> new PersonDTO((String) arr[0], (String) arr[1], (String) arr[2]))
          .collect(Collector.toList());

【讨论】:

    【解决方案2】:
    public PersonDto (String name, String surname, String phone){
        this.name = name;
        this.surname = surname;
        this.phone = phone;
    }
    
    public PersonDto buildPersonDto(Object[] info){
        return new PersonDto((String)info[0], (String)info[1], (String)info[2]);
    }
    
    public List<PersonDto> convertList(ArrayList<Object[]> people){
        ArrayList<PersonDto> result = new ArrayList<>();
        for(Object[] person : people)
            result.add(buildPersonDto(person));
        return result;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-04
      • 2021-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多