如何使用Java流维护可变

时间:2019-03-29 09:31:18

标签: java

我正在将人员列表传递给本地方法。在这种方法中,我通过传递的列表流并创建一个新列表。我担心的是,如果我为新创建的列表进行更新,则会影响传递的列表。我正在发送一段代码。如何维护传递列表的可变性。

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());
    });

1 个答案:

答案 0 :(得分:0)

对于您而言,在创建新人员列表(personNewList)时,您可以返回Person返回相同人员实例的新实例。

我在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());

如果您确实想使Person类可变,请遵循以下link