我有一个对象列表。假设对象是这样的
Person:
{
id
pwd
}
现在,我有一个修改pwd
并返回修改后的字符串的函数。
public String modifyPwd(final String pwd) {
// Some operation
return modifiedPwd;
}
我想在Person对象列表的Person.pwd
上迭代地应用modifyPwd()。
最终结果应该有一个Person对象列表,每个对象都包含未修改的id
和modifiedPwd
。
有没有一种方法可以在不创建新列表和/或for循环的情况下使用流来做到这一点?
如果我正确理解了问题,您可能正在寻找这样的内容
public class App{
public static void main(String[] args) throws IOException {
List<Person> persons =
List.of(new Person("a", "pwd1"), new Person("b", "pwd2"), new Person("c", "pwd3"));
System.out.println(persons); //PRINTS [App.Person(id=a, pwd=pwd1), Trees.BST.Person(id=b, pwd=pwd2), Trees.BST.Person(id=c, pwd=pwd3)]
persons.stream().forEach(e -> e.pwd = e.pwd + "_modified");
System.out.println("Persons with modified passwords" + persons); //PRINTS [App.Person(id=a, pwd=pwd1_modified), App.Person(id=b, pwd=pwd2_modified), App.Person(id=c, pwd=pwd3_modified)]
}
@Setter
@Getter
@AllArgsConstructor
@ToString
public static class Person {
String id;
String pwd;
}
}