关于迭代器的一个问题 请大神说说。。。。。。。。。。。。。。。

问题描述

publicstaticvoidmain(String[]args){List<Integer>list=newArrayList<Integer>();list.add(1);list.add(2);list.add(3);Iteratorit=list.iterator();while(it.hasNext()){Integera=(Integer)it.next();a=123;System.out.println(list.get(0));}我想通过迭代器改变里面的值,我的认为是我通过迭代器迭代出来并赋给a,因为集合装的是对象,所以我认为a指向的是集合元素的地址,所以我希望通过a的改变来改变集合元素的值,但是始终不行,我想问问为什么?谢谢

解决方案

解决方案二:
a又指向123的地址了吧
解决方案三:
引用1楼Mr_WangB的回复:

a又指向123的地址了吧

a之前指向的是每一个元素,我想的是他改变了那么元素就应该改变因为是同一个地址
解决方案四:
引用2楼woshiyeda的回复:

Quote: 引用1楼Mr_WangB的回复:
a又指向123的地址了吧

a之前指向的是每一个元素,我想的是他改变了那么元素就应该改变因为是同一个地址

a可以说存的是地址,a原来是指向每个元素的,但是后来a=123;使得a指向了新的Integer对象,此时仅仅是a的值发生了变化,但a原来指向的list中的对象还是没变化的。总之,就是a指向了不同地方(存的地址变了),但所指向的对象都没变。
解决方案五:
这是一个关于包装类的问题。下面的代码详细的解释了你的疑问(顺便优化了一下代码):importjava.util.*;publicclassTestAtuoBox{publicstaticvoidmain(String[]args){List<Integer>list=newArrayList<Integer>();Collections.addAll(list,1,2,3);System.out.println(list);/////////////////////////////////////////////////////Integernum1=newInteger(1);//不同于Integernum1=1;我的这句涉及到常量池取值以及自动打包Integernum2=num1;System.out.println(num1==num2);//从JDK5.0开始基本数据类型和包装类类型之间可以直接赋值[自动打包自动解包]//下面的这行代码创建了一个新变量,原因如下num2=2;//等同于执行了num1=Integer.valueOf(2);自动打包[@sinceJDK5.0]System.out.println("num1是:"+num1+"num2是:"+num2);/////////////////////////////////////////////////////System.out.println("------------------------------");for(Iterator<Integer>car=list.iterator();car.hasNext();){Integera=car.next();//相当于上面的Integernum2=num1;a=123;//相当于上面的num2=2;//没明白下面是什么意思。如果想遍历List集合,不如用foreach或迭代器System.out.println(list.get(0));}}}

解决方案六:
iterator迭代的时候不允许修改集合,想修改集合用ListIterator。

时间: 2024-10-26 12:26:25

关于迭代器的一个问题 请大神说说。。。。。。。。。。。。。。。的相关文章

sql-本人是新手,菜鸟一个,请大神帮忙

问题描述 本人是新手,菜鸟一个,请大神帮忙 现有两个表 用户表 USER (user_id 主键) (user_name ) 部门表 DELOPE (delope_id 主键)(user_id)(delope_name) 现在请查出名字叫'王五'的所在部门名字及所在部门的人数. 请用oracle和sqlserver分别写一下. 解决方案 表没建对吧,员工表跟部门表应该是多对一的关系吧. USER (user_id 主键) (user_name )(delope_id ) DELOPE (delo

用c++写了一个函数判断一个数组是否包含另一个数组 但是总是返回-1 请大神们帮忙看看错在哪里

问题描述 用c++写了一个函数判断一个数组是否包含另一个数组 但是总是返回-1 请大神们帮忙看看错在哪里 int substr_index( const char substr[], const char str[]) { int flag = -1; int sizeOfSubstr = sizeof(substr)/sizeof(char); int sizeOfStr = sizeof(str)/sizeof(char); for (int i = 0; i < sizeOfStr; i+

请大神帮忙做一个matlab的三次样条插值程序,小弟是小白啊,谢过了!急急急

问题描述 请大神帮忙做一个matlab的三次样条插值程序,小弟是小白啊,谢过了!急急急 已知: X=[1 3 6 8 10 14 16 20 23] Y=[0.345 0.343 0.616 0.900 0.581 0.302 0.250 0.101 0.104] 求: X=[1 2 3 ...... 23]对应的Y值 解决方案 x=[1 3 6 8 10 14 16 20 23]; y=[0.345 0.343 0.616 0.900 0.581 0.302 0.250 0.101 0.104

一个很奇怪的命名空间问题,请大神解题!

问题描述 昨天晚上在编译初步开发好的程序时,发现一个复杂的机制造成的问题,最终问题确定的原因,就是和awaitasync的支持库有关,但其本质原因是什么?就是想不明白,想请高手们解解题.首先因为我的应用服务端使用了WebApi2.0,客户端使用WinForm进行http访问,为了达到较好的用户体验,客户端采用了awaitasync异步.同时为了支持Winxp,类库只能使用到Net4.0,而Net4.0不支持awaitasync异步.解决这个问题,通过的是微软开发的附加支持包,我使用Nuget安装

请大神帮忙写一个简单的聚类算法程序,在线等……用matlab或者java实现

问题描述 请大神帮忙写一个简单的聚类算法程序,在线等--用matlab或者java实现 Step1:将N个数据,按照从小到大的顺序排序 d1.d2,.....dn:其中d1时最小值,dn是最大值 聚类判别阈值计算方法为: Step2:让每个数据都作为一个类,那么有 {d1},{d2},{d3},.....{dn} Step3:计算聚类中心 假设共有P个类,那么1<=k<=P,其中r代表每个类中数据的个数,同时计算相邻两个聚类中心之间的距离,如下 Step4:找出相邻两个聚类中心的最小值 Ste

c++里如何重定向一个字符串 使string变成int型 请大神指导啊

问题描述 c++里如何重定向一个字符串 使string变成int型 请大神指导啊 c++里如何重定向一个字符串 使string变成int型 请大神指导啊 解决方案 用atoi就 可以了 比如: string s="534"; int f=atoi(s.c_str()); cout<<f; //printf("f=%d",f); 解决方案二: include 使用atoi就行 解决方案三: 包含一下stdlib.h 解决方案四: vs2008以上好像昂要用

一个关于数组溢出的问题,请大神帮小弟解惑

问题描述 一个关于数组溢出的问题,请大神帮小弟解惑 vc6.0环境,代码很简单,但是不管你输入的数组n是多大,a[n]的值都是n,按理说不是最大就到n-1了吗,为什么不报错? #include using namespace std; int main() {int i;int a[11]; int*p=a; for(i=0;i<=10;i++) a[i]=i; cout<<a[11]; return 0; } 解决方案 你试试int *a = new int[11];数组实际上放在栈内

malloc-C语言Easyx的一个问题,请大神帮忙看看

问题描述 C语言Easyx的一个问题,请大神帮忙看看 不知道为什么不出东西.. struct img { int x; int y; IMAGE imggrass; struct img next; }; main() { struct img *p; p=(struct img)malloc(sizeof(struct img)); initgraph(640,480); loadimage(&p->imggrass, "resbmp_grass.bmp"); p-&g

有一个关于Java的小题目,做了好久做不出来,还请大神帮我!

问题描述 有一个关于Java的小题目,做了好久做不出来,还请大神帮我! 请大家帮帮我,明天就要交作业了!5555555 解决方案 哪里做不出来,,,说下 解决方案二: 这是小题目么我想问....85分 解决方案三: 这都是一个功能了好不?关键你这也没说你哪儿不会啊 解决方案四: 页面不会写还是后台不会?你总得说清楚啊 解决方案五: 如果你搭好了框架,还是来张项目目录结构图来看看先