容器放置元素(对象)后再对该元素进行操作能否改变容器中元素的值
来源:互联网 发布:乐视手机网络连接失败 编辑:程序博客网 时间:2024/06/11 23:43
代码:
Map<String,Staff> map = new HashMap<String, Staff>();
Staff staff1 = new Staff("001","zhang san");
Staff staff2 = new Staff("002","li si");
Staff staff3 = new Staff("003","wang mazi");
Staff staff4 = new Staff("004","chen liu");
Staff staff5 = new Staff("005","wang wu");
map.put(staff1.getNumber(), staff1);
map.put(staff2.getNumber(), staff2);
map.put(staff3.getNumber(), staff3);
map.put(staff4.getNumber(), staff4);
map.put(staff5.getNumber(), staff5);
staff1.setName("zhang san has modified");
show(map);
先把生成的对象或成为元素全部放入Map容器中,然后再对其中的某一个元素进行操作,修改其属性,则结果.......?
结果:
zhang san has modified
li si
wang mazi
chen liu
wang wu
原理:
容器中放置的元素,其实并非现实生活中的那样真的把元素放到容器里面去了。而是容器获得该元素的引用(指针、句柄),当用户再进行对元素操作时,是拿另外的引用去操作该元素对应的实际对象,对象只有一个!所以对象的属性值发生了改变。结果自然发生了改变。
如图所示的内存模型中,容器里面有三个元素,分别是元素1、元素2、元素3,一个句柄指向该容器,容器中近保存了元素的引用,其实是引用指向这个元素。
同时用户用另外一个句柄去修改元素1,此时用户的这个句柄完全有能力去修改这个元素。修改之后,容器仍是吃用指向元素1的引用,所以此时容器里面的元素1已经和刚开始放入时候的元素1发生了变化。- 容器放置元素(对象)后再对该元素进行操作能否改变容器中元素的值
- 对容器元素进行排序
- 测试对Vector容器,遍历元素删除满足条件元素,而进行Erase()操作的效率
- vector容器中元素初始化(容器的元素都是副本)
- random_shuffle函数改变vector容器中元素的次序
- 容器元素
- C++语法基础--顺序容器(三)--关系操作符,容器大小的操作,访问元素,删除元素,查找元素
- 利用对象的Class辅助实现对多态容器中元素的查找
- 对容器元素重新排序的算法
- Jquery获取元素的父容器对象
- 在顺序容器中添加元素的操作
- 删除顺序容器内元素的操作
- 顺序容器:删除元素的操作
- 顺序容器操作2 在顺序容器中添加元素
- STL容器中元素的具体需求
- STL中map容器的元素插入
- erase容器中元素的原则
- 使用std::sort() 依据元素的字段值对容器内元素排序
- POJ-2528-Mayor's posters
- easyUI TreeGrid
- Invoking web services with Java clients
- Vaadin Web应用开发教程(7):UI组件概述
- 大型门户网站的十四大技术!!!
- 容器放置元素(对象)后再对该元素进行操作能否改变容器中元素的值
- 每日一则小故事:可持续性成功
- linux任务切换以及TSS以及内核栈以及寄存器的保存
- Linux/Unix下makefile文件编写实例
- OpenNI vs Kinect for Windows SDK
- 我们的产品到底怎么了
- 开发板------OK6410
- window 配置 route
- 前期工作