关于java的Iterator有点郁闷。这样怎么不能正常输出”cccc“

packagecom.axhu;importjava.util.*;publicclassTestIterator{publicstaticvoidmain(String... package com.axhu;
import java.util.*;
public class TestIterator {

public static void main(String[] args) {
List a = new ArrayList();
a.add("aa");
a.add("bbb");
a.add("cccc");
a.add("ddddd");

for(Iterator it =a.iterator();it.hasNext();){
if(it.next()=="aa")
{ it.remove();}
System.out.println(it.next());
}

}
}
展开
 我来答
ljjtq
2012-08-07 · 超过17用户采纳过TA的回答
知道答主
回答量:94
采纳率:0%
帮助的人:48.5万
展开全部
程序有问题,应该是这样吧!
package com.axhu;
import java.util.*;
public class TestIterator {

public static void main(String[] args) {
List a = new ArrayList();
String temp=null;//定义一个临时变量
a.add("aa");
a.add("bbb");
a.add("cccc");
a.add("ddddd");

for(Iterator it =a.iterator();it.hasNext();){
temp=(String)it.next();//将值放到temp中,用于后面的处理
if("aa".equals(temp))
{ it.remove();}
else{
System.out.println(temp);//输出的不为"aa"的内容,如果只要输出“ccc”就自己加上条件控制
}

}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不落叶的柏树
2012-08-07 · TA获得超过612个赞
知道小有建树答主
回答量:139
采纳率:0%
帮助的人:195万
展开全部
ccc的输出被 if(it.next()=="aa")掠过了。

改成这样即可:
List a = new ArrayList();
a.add("aa");
a.add("bbb");
a.add("cccc");
a.add("ddddd");
for (Iterator it = a.iterator(); it.hasNext();) {
String temp = (String) it.next();
if (temp == "aa") {
it.remove();
} else {
System.out.println(temp);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
andyyanshi
2012-08-07 · TA获得超过750个赞
知道小有建树答主
回答量:308
采纳率:0%
帮助的人:161万
展开全部
程序一共两个问题,String的比较用equal比较好,然后在for循环里调用了两次it.next()以至于跳过了ccc。
public static void main(String[] args) {
List<String> a = new ArrayList<String>();
a.add("aa");
a.add("bbb");
a.add("cccc");
a.add("ddddd");
for (Iterator<String> it = a.iterator(); it.hasNext();) {
String temp=it.next();
if (temp.equals("aa")){
it.remove();
}else{
System.out.println(temp);
}
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xinnaliyang
2012-08-07 · 超过12用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:35.6万
展开全部
List a = new ArrayList();
a.add("aa");
a.add("bbb");
a.add("cccc");
a.add("ddddd");
Iterator it = a.iterator();
int i=0;
while (it.hasNext()) {
i++;
String ly = (String)it.next();
if(ly.equals("aa")){
it.remove();
}else{
System.out.println(ly);
}
}

it.next() 这个意思是去下一个的值 而不是当前的值 经过测试 希望能帮到你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
没有响应m2
2012-08-07 · TA获得超过8387个赞
知道大有可为答主
回答量:7579
采纳率:33%
帮助的人:3529万
展开全部
方法他们都写出来
不过现在其实iterator用的很少了
因为java5.0加入了新的for循环
public static void main(String[] args) {
List<String> a = new ArrayList<String>();
a.add("aa");
a.add("bbb");
a.add("cccc");
a.add("ddddd");

for(String s : a)
{
System.out.println(s);
}

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

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式