A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宋红旺 黑马帝   /  2011-9-23 11:03  /  1920 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

java中集合在迭代中的类似以下容易忽略的小问题汇总,大家都来补充吧!!!!
我先说两个:
/////////////////////////情况一//////////////////////////
String str="abcdef";
for(int i=str.length;i>0;i--){
str=str.substring(0,2);
i=str.length;//此时的str.length是6而不是2
}
////////////////////////情况二///////////////////////////////
List list=new ArrayList();
list.add(1);
list.add(2);
list.add(3);
for(Iterator it=list.iterator();it.hasNext();){
System.out.println(it.next());
it.remove();
//list.remove(1);这里不能用集合的remove方法移除,
//否则会出现Exception in thread "main" java.lang.IllegalStateException
}
大家分享,共同进步。

评分

参与人数 1技术分 +1 收起 理由
admin + 1 看看大家的回答!

查看全部评分

4 个回复

倒序浏览
黑马网友  发表于 2011-9-23 13:16:13
沙发
。。。真的是死循环,第一个。。i一直等于2
回复 使用道具 举报
黑马网友  发表于 2011-9-23 14:41:22
藤椅
/////////////////////////情况一//////////////////////////[code=java]String str="abcdef";
for(int i=str.length;i>0;i--){
str=str.substring(0,2);
i=str.length;//此时的str.length是6而不是2
} [/code]str的length()方法返回的是2

我看了半天不知道楼主想要阐述什么观点,

死循环是因为在循环中总是将str字符串截取后的长度赋予i。i的值没有改变。一直满足于for循环中的条件

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-24 20:57:34
板凳
童鞋们,不好意思,的确是我的失误。
String str="abcdef";
for(int i=str.length;i>0;i--){
str=str.substring(0,2);
System.out.println(str.length);//此时的str.length是2而不6(这里写反了)
}
在这里我想表述的是,for循环的i变量一旦赋值,等到第二遍再循环的时候就不会从新赋值了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马