有没有一种方法可以在Java中实现与下划线拾取函数相同的功能?如果是,怎么做?

有没有一种方法可以在Java中实现与下划线拾取函数相同的功能?如果是,怎么做?,java,Java,考虑以下代码: import java.util.*; public class Main{ public static void main(String []args){ List<Person> items=new ArrayList<>(); items.add(new Person(1,"hari","aa")); items.add(new Person(2,"das","bb"));

考虑以下代码:

import java.util.*;
public class Main{

     public static void main(String []args){
        List<Person> items=new ArrayList<>();
        items.add(new Person(1,"hari","aa"));
        items.add(new Person(2,"das","bb"));
        items.add(new Person(3,"giri","cc"));
        System.out.println(items);
        };
     }


class Person{
    int num;
    String name;
    String dept;
    Person(int num,String name,String dept){
        this.num=num;
        this.name=name;
        this.dept=dept;
    }   
}
import java.util.*;
公共班机{
公共静态void main(字符串[]args){
列表项=新建ArrayList();
添加(新人员(1,“hari”、“aa”);
添加(新人员(2,“das”、“bb”);
添加(新人员(3,“giri”、“cc”);
系统输出打印项次(项);
};
}
班主任{
int-num;
字符串名;
弦乐部;
人员(整数、字符串名称、字符串部门){
this.num=num;
this.name=name;
this.dept=dept;
}   
}
然后我需要用这个对象构造一个列表,该对象在列表中只有name和dept属性。有没有办法实现同样的目标

比如说,, 现有数组的形式为: [{num:1,名称:“哈里”,部门:“aa”},{num:2,名称:“达斯”,部门:“bb”},{num:3,名称:“吉里”,部门:“cc”}]

新阵列要求如下所示:
[{name:“hari”,dept:“aa”},{name:“das”,dept:“bb”},{name:“giri”,dept:“cc”}]

只需创建第二个构造函数:

class Person{
    int num;
    String name;
    String dept;
    Person(int num,String name,String dept){
        this.num=num;
        this.name=name;
        this.dept=dept;
    }   
    Person(String name,String dept){
        this.name=name;
        this.dept=dept;
    }   
}

注意:Person对象仍将具有num属性,但它将被设置为默认值(
0
)。如果这不是您想要的,那么可以使用一个只包含name和dept的基类Person,以及一个包含所有三个属性的子类IndexedPerson(或任何您想称之为IndexedPerson的名称)。

我认为您应该使用Java流将Person列表转换为您想要的对象。大概是这样的:

items.stream()
.map(person->new SimplePerson(person.name,person.dept)
.collect(Collectors.toList());

其中SimplePerson是Person类的“简化”版本。例如:

class SimplePerson{

  String name;
  String dept;
  public SimplePerson(String name,String dept){
    this.name=name;
    this.dept=dept;
  }   
}

创建一个
PersonNameDeptTo
类:

public class PersonNameDeptDto {

  private String name;
  private String dept;

  public PersonNameDeptDto(Person p) {
    this.name = p.name;
    this.dept = p.dept;
  }
}
然后填写您的列表:

List<PersonNameDeptDto> items=new ArrayList<>();
items.add(new PersonNameDeptDto(new Person(1,"hari","aa")));
List items=new ArrayList();
添加(新的人名deptto)(新的人名(1,“hari”,“aa”));

作为旁注,通常最好在dto中包含
id
,除非您有另一个唯一标识符。

Sorry.List。与现有的arraylist相同。此
列表中的每个元素的类型是什么?
?与
列表中的
相同。编写什么来代替
您可以将它添加到您的问题中吗最终结果应该是什么?只具有名称和部门属性的对象。现有对象现在具有num、name和dept。如
类PersonLite{String name;String dept}
?构造函数需要具有相同的类名,不是吗?是的!感谢您注意到它!