如何使用java流维护可变
我正在将人员列表传递给本地方法。在这个方法中,我使用传递的列表进行流式处理,并创建一个新列表。我担心的是,如果我更新新创建的列表,它会影响已通过的列表。我正在发送一段代码。如何维护传递列表的可变如何使用java流维护可变,java,Java,我正在将人员列表传递给本地方法。在这个方法中,我使用传递的列表进行流式处理,并创建一个新列表。我担心的是,如果我更新新创建的列表,它会影响已通过的列表。我正在发送一段代码。如何维护传递列表的可变 private void checkMutable(List<person> personList) { List<person> personNewList = personList.stream() .map(person->person)
private void checkMutable(List<person> personList) {
List<person> personNewList = personList.stream()
.map(person->person)
.collect(Collectors.toList());
personNewList.stream().forEach(p -> {
p.setEmail("ccc@gmail.com");
p.setName("ccc");
});
personList.stream().forEach(p -> {
System.out.println("name : " + p.getName() + " --- " + "name : " + p.getEmail());
});
private void checkMutable(列表个人列表){
List personnellist=personList.stream()
.map(个人->个人)
.collect(Collectors.toList());
personNewList.stream().forEach(p->{
p、 设置电子邮件(“ccc@gmail.com");
p、 设置名称(“ccc”);
});
personList.stream().forEach(p->{
System.out.println(“name:+p.getName()+”--“+”name:+p.getEmail());
});
在您的情况下,当您创建一个新的人员列表(人员列表)
时,您可以返回一个新的人员实例
返回相同人员的实例
我在Person
类中添加了以下方法
public static Person copyOf(Person person) {
return new Person(person.getEmail(),person.getName());
}
并在filter
谓词中使用此方法创建Person
List<Person> personNewList = personList.stream().map(person ->
Person.copyOf(person)).collect(Collectors.toList());
List personnellist=personList.stream().map(person->
Person.copyOf(Person)).collect(Collectors.toList());
如果你真的想让
Person
类可变,请遵循下面的是否有人能给出答案。你的映射(Person->Person)
没有任何作用。新列表包含与旧列表相同的对象。如果您更改它们,您就是在更改原始对象。如果您想要复制您的person
对象,您需要一些代码来复制该对象,而不仅仅是复制列表。如果您想要深度复制列表,这并不是最好的方法…请on->person.clone()可能在这个实例中起作用,但乍一看它似乎不是一个很好的设计…我们有没有其他方法不使用clone方法复制这个对象。