黑马程序员技术交流社区
标题:
黑马新手不得不解决的问题
[打印本页]
作者:
金肖
时间:
2012-5-2 11:20
标题:
黑马新手不得不解决的问题
import java.util.ArrayList;
import java.util.ListIterator;
public class ListDemo {
public static void main(String[] args) {
ArrayList<String> al = new ArrayList<String>();
al.add("abc01");
al.add("abc02");
al.add("abc03");
al.add("abc04");
//在迭代过程中天加元素
ListIterator<String> li = al.listIterator();
while(li.hasNext())
{
String s = li.next();
if(s.equals("abc02"));
{
li.add("java"); //此处不是判断s是否和“acb02”的地址相同,如果相同就在“abc02”后面添加“java”
}
}
System.out.println(al);
}
}
//可是打印即如果为什么是:[abc01, java, abc02, java, abc03, java, abc04, java]
//而不是:[abc01, abc02,java, abc03, abc04]它呢?
作者:
杨志
时间:
2012-5-2 11:38
这个这个……我表示很悲剧!
这这里的原因就是因为:
if(s.equals("abc02"));
复制代码
这一句代码中的后面的一个分号导致的!
这一个分号代表这句语言执行结束,那么就就说这个判断也就结束了。
那么后面的逻辑就不存在了。这就导致了,不管是不是一样,也会去增加。
还有就是equals比较的不是地址哦!这里比较的就是表面的值呢!
要比较地址则要:
if(s == abc02"){
li.add("java");
}
复制代码
谢谢!
作者:
贾联国
时间:
2012-5-2 11:42
本帖最后由 贾联国 于 2012-5-2 11:51 编辑
add(E e)方法是将指定的元素添加到此列表的尾部,程序会执行无论if是否符合条件,执行一次add
作者:
金肖
时间:
2012-5-2 11:43
噢。 我也太不小心了。。。
作者:
隋营营
时间:
2012-5-2 11:52
OK,学习了,ArrayList用Iterator迭代的时候不允许修改数据,而用ListIterator迭代时可以!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2