如何使用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方法复制这个对象。