Java流映射修改不在类中构建的自定义类对象
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java流映射修改不在类中构建的自定义类对象,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1491字,纯文字阅读大概需要3分钟。
内容图文
![Java流映射修改不在类中构建的自定义类对象](/upload/InfoBanner/zyjiaocheng/797/6a26296f48794a628171431a4cd45f44.jpg)
class Employee {
public String name;
public Integer age;
public Employee(String n, int age) {
this.name = n;
this.age = age;
}
public String toString() {
return this.name+":"+this.age;
}
}
内部主要:
ArrayList<Employee> list = new ArrayList<>();
list.add(new Employee("NameA", 10));
list.add(new Employee("NameB", 25));
list.add(new Employee("NameC", 30));
list.add(new Employee("NameD", 45));
list.add(new Employee("NameE", 50));
System.out.println(list);//[NameA:10, NameB:25, NameC:30, NameD:45, NameE:50]
list.stream().filter(e->e.age%10==0).map(e->e.name+="CHANGE").collect(Collectors.toList());
System.out.println(list); //[NameACHANGE:10, NameB:25, NameCCHANGE:30, NameD:45, NameECHANGE:50]
ArrayList<String> strList = new ArrayList<>();
strList.add("1");
strList.add("2");
strList.add("3");
strList.add("4");
strList.add("5");
System.out.println(strList);//[1, 2, 3, 4, 5]
List<String> updatedStrList = strList.stream().map(s->s+="CHANGE").collect(Collectors.toList());
System.out.println(updatedStrList);//[1CHANGE, 2CHANGE, 3CHANGE, 4CHANGE, 5CHANGE]
System.out.println(strList);//[1, 2, 3, 4, 5]
这种行为的原因是什么?
当更改Employee对象的值时,将在原始ArrayList中更新值,但是当String的StringList更改时,值不会反映在原始ArrayList中.
解决方法:
e.name =“CHANGE”和s-> s =“CHANGE”之间有所不同.它们都创建了一个新的String实例,但是当第一个将新String分配给Employee类的实例的实例变量(并因此改变该实例)时,第二个将它分配给本地String变量.
因此,e.name =“CHANGE”会更改原始List的相应实例,而s-> s =“CHANGE”则不会.
内容总结
以上是互联网集市为您收集整理的Java流映射修改不在类中构建的自定义类对象全部内容,希望文章能够帮你解决Java流映射修改不在类中构建的自定义类对象所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。