2 qq773968 qq773968 于 2016.09.19 14:51 提问

ArrayList的foreach方法,中间两天不知道为什么无效--

为什么中间两条foreach语句无效1111111111111111111111111111111111111

5个回答

seeze
seeze   2016.09.19 15:20

并没有这么用过,只能试着解释一下:

str1->str1.toUpperCase()操作后的值并没有赋给str1,相当于直接写了一句str1.toUpperCase();应该不会改变其值
key++这个问题就大了,如果能自增,岂不是会进入死循环?如果不是语法错误,那就是forEach自身做的保护,可能你得到的key只是一个临时变量,不会改变容器中的元素值(没试过不能确定)

seeze
seeze 回复qq773968: 在循环中修改索引号本身是种不正常的行为,正确做法应该是先移除key再添加一个,所以不想多去研究为什么不行了。至于str1那个,改成str1->str1=str1.toUpperCase();应该可以吧
接近 2 年之前 回复
qq773968
qq773968 回复qq773968: 但我感觉key++应该没问题,foreach是没有一个对象就调用方法,所以应该只是key的值自增一次,但不明白为什么key值没变,估计也是参数传递问题。如果死循环应该会报错
接近 2 年之前 回复
qq773968
qq773968 感觉你说的应该是对的,JAVA的参数传递问题,传给形参后,实参的值没改变
接近 2 年之前 回复
qq773968
qq773968   2016.09.19 14:52

图片说明

shihengzhen101
shihengzhen101   Rxr 2016.09.19 15:02

你这代码好高端,我的java只学了一点点,帮不到你了

qq_19394755
qq_19394755   2016.09.19 15:24

forEach也是有system.out.print()的功能?

qq773968
qq773968 foreach应该是遍历,里面的输出是对每个对象调用的方法
接近 2 年之前 回复
qq773968
qq773968   2016.09.19 15:40

图片说明
感谢,是参数传递问题

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
java List(ArrayList)的5种遍历方式解析
前言 对于ArrayList来说,从名字”数组列表”就知道它的底层其实是由数组实现的,同时ArrayList实现了RandomAccess接口,我们可以并且最好通过索引来访问ArrayList中的元素,这样的效率是最高的。 调用代码public static void main(String[] args) { List<Integer> list = new ArrayList
List遍历:for,foreach还是Iterator?
先说结论: 如果是ArrayList,用三种方式遍历的速度是for>Iterator>foreach,但基本上属于同一个速度级别; 如果是LinkedList,则三种方式遍历的差距很大了,用for遍历的效率远远落后于foreach和Iterator,相差几十倍,Iterator>foreach>>>for; 模拟50000条数据,放入ArrayList和LinkedList,对两个List分别
[破除迷信]java.util.ArrayList在foreach循环遍历时可以删除元素
ArrayList是java开发时非常常用的类,常碰到需要对ArrayList循环删除元素的情况。这时候大家都不会使用foreach循环的方式来遍历List,因为它会抛java.util.ConcurrentModificationException异常。比如下面的代码就会抛这个异常: import java.util.ArrayList; import java.util.List; pub
ArrayList和LinkedList的几种循环遍历方式及性能对比分
转自:http://www.trinea.cn/android/arraylist-linkedlist-loop-performance/ 主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性能测试对比,根据ArrayList和LinkedList的源码实现分析性能结果,总结结论。 通过本文你可以了解 (1)List的五种遍历方式及各
Java8 foreach方法
java8以前传统迭代方法:         List list =new ArrayList();         //赋值;        list.add("ss");        for(String s:list){          s+="pp";      } java8迭代方法:        List list =new ArrayList();      
foreach中使用remove问题
先贴代码:     List a = new ArrayList();         a.add("1");         a.add("2");         for (String temp : a) {             if ("2".equals(temp)) {                 a.remove(temp);             }   
java.util.ArrayList在foreach循环遍历时删除元素的问题
http://rongmayisheng.com/post/%E7%A0%B4%E9%99%A4%E8%BF%B7%E4%BF%A1java-util-arraylist%E5%9C%A8foreach%E5%BE%AA%E7%8E%AF%E9%81%8D%E5%8E%86%E6%97%B6%E5%8F%AF%E4%BB%A5%E5%88%A0%E9%99%A4%E5%85%83%E7%B4%A0
Java8,iterator的forEachRemaining中remove可能抛异常
Java8的官方文档中,对于iterator的forEachRemaining的用法介绍如下: default void forEachRemaining(Consumer action) Performs the given action for each remaining element until all elements have been processed or the actio
foreach循环中为什么不要进行remove/add操作
先来看一段代码,摘自阿里巴巴的java开发手册1 List&amp;lt;String&amp;gt; a = new ArrayList&amp;lt;String&amp;gt;(); 2 a.add(&quot;1&quot;); 3 a.add(&quot;2&quot;); 4 for (String temp : a) { 5 if(&quot;1&quot;.equals(temp)){ 6 a.remove(temp); 7 } 8 }...
JavaScript中的this用法
1涵义 this总是返回一个对象,就是返回属性或者方法当前所在的对象 this.property 例如: var person ={     name: '张三',     describe: function () {         return '姓名:'+ this.name;     } }; person.describe()//张三 this.name表示d