for循环(元素:集合)不进行永久性更改

时间:2014-10-26 16:30:18

标签: java for-loop

当使用for循环使用(element:collection)使用for循环进行集合时,我对数据所做的更改仅在循环期间保持不变。

这是我的代码:

String[] names = {"bob", "fred", "marcus", "robert", "jack", "steve", "nathan", "tom", "freddy", "sam"};

for(String indexData : names)
{   
    indexData = indexData.toUpperCase();
    System.out.println(indexData);
}

System.out.println("this is word 5 in the array: " + names[4]);

输出:

BOB
FRED
MARCUS
ROBERT
JACK
STEVE
NATHAN
TOM
FREDDY
SAM
this is word 5 in the array: jack

我的问题是使用这种类型的循环如何进行永久性更改?

3 个答案:

答案 0 :(得分:3)

循环(Element:Collection)称为增强for循环。 ehanced for循环维护一个迭代器,不允许删除对象,或显式使用迭代器。

实现所需结果的方法是通过标准循环:

for(int i=0; i<names.length;i++)
{   
    names[i] = names[i].toUpperCase();
    System.out.println(names[i]);
}

答案 1 :(得分:0)

你不能用增强的循环来做到这一点。你需要Traditional for循环。indexData = indexData.toUpperCase();只改变局部变量indexData。它不会影响你的数组元素。

关注Traditional for loop将更改您的数组

String[] names = {"bob", "fred", "marcus", "robert", "jack", "steve", "nathan", "tom", "freddy", "sam"};


for(int i=0;i<names.length;i++) {   

   names[i]= names[i].toUpperCase();
   System.out.println(indexData);

}

 System.out.println("this is word 5 in the array: " + names[4]);

答案 2 :(得分:0)

您可以使用ListIterator

String[] names = {"bob", "fred", "marcus", "robert", "jack", "steve", "nathan", "tom", "freddy", "sam"};

ListIterator<String> iterator = Arrays.asList(names).listIterator();
while (iterator.hasNext()) {
    String name = iterator.next();
    iterator.set(name.toUpperCase());
}