有没有一种方法可以在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}
?构造函数需要具有相同的类名,不是吗?是的!感谢您注意到它!