java里增强for循环【for(String a : arrayList)】里面可以修改数据吗?

 我来答
308xiaobao
高粉答主

2017-07-23 · 每个回答都超有意思的
知道大有可为答主
回答量:2.6万
采纳率:95%
帮助的人:2756万
展开全部

java里增强for循环【for(String a: arrayList)】里面可以修改数据,但是不能删除数据,如下例子:


修改集合:

import java.util.ArrayList;
import java.util.List;


public class TestA {

public static void main(String[] args){
//集合
List<String> arrayList=new ArrayList<String>();
//存放元素
arrayList.add("hello");
arrayList.add("ninghao");
arrayList.add("bye");
//集合标量
int index=0;
//遍历集合
for(String a:arrayList){
//输出集合对象
System.out.println(a);
//修改集合对象
arrayList.set(index, "hi");
//标量加一
index++;
}
//输出集合
System.out.println(arrayList);
}
}

结果:
hello
ninghao
bye
[hi, hi, hi]

删除集合元素:

import java.util.ArrayList;
import java.util.List;


public class TestA {

public static void main(String[] args){
//集合
List<String> arrayList=new ArrayList<String>();
//存放元素
arrayList.add("hello");
arrayList.add("ninghao");
arrayList.add("bye");
//集合标量
int index=0;
//遍历集合
for(String a:arrayList){
//输出集合对象
System.out.println(a);
//删除元素
arrayList.remove(index);

//标量加一
index++;
}
//输出集合
System.out.println(arrayList);
}
}
结果:
hello
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
at java.util.AbstractList$Itr.next(AbstractList.java:343)
at app.TestA.main(TestA.java:19)

由以上例子可以看出,增强for循环,在循环里可以修改集合元素,但是不能删除集合元素。

466764253
2015-09-25 · 超过21用户采纳过TA的回答
知道答主
回答量:76
采纳率:0%
帮助的人:34.4万
展开全部
不能修改,a是引用,修改a的值只是让a指向其他的String对象,并没有改变list中的内容
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
黑洞永恒的黑暗
2015-09-23 · 超过12用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:9万
展开全部
不能,不能修改,其他的比如:输出、累加可以。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
科商国0p
2015-09-23 · TA获得超过358个赞
知道小有建树答主
回答量:534
采纳率:28%
帮助的人:238万
展开全部
不可以,这个只是取出数据,并不能修改
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
仰望半角
2017-07-12 · TA获得超过452个赞
知道小有建树答主
回答量:379
采纳率:80%
帮助的人:161万
展开全部
  1. for循环可以修改对象内容  , 但是重新赋值无效 , 另外不可以删除和新增元素

  2. 集合或者数组中 , 存放的是对象的引用 , 而不是对本身 , 对于字符串来说 , 存的就是这个字符串, 而不是这个字符串对象 

    1. 如果你在循环中修改字符串, 其实是对字符串重新赋值 , 但是原本字符串的那个引用, 是没有发生改变的 , 所以修改没有用

    2. 如果你放的是一个对象 , 比如Person, 那么你可以在循环中对person这个对象中的属性进行修改 , 比如修改他的 age属性  , 但是不能重新赋值,  也就是不能用 p = new Person(); 代码不会报错 , 但是这个操作不会影响集合中这个元素的内容

  3. 另外 ,增强for循环其他地方都和普通for循环一样, 唯一的不同是 , 他不能获得集合的下标 , 也就是说不能对指定位置的元素进行处理 , 只能根据元素本身的属性进行一系列判断

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 5条折叠回答
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式