java中的集合map问题

importjava.util.HashMap;importjava.util.Iterator;publicclassMapTest{publicstaticvoidm... import java.util.HashMap;
import java.util.Iterator;

public class MapTest
{
public static void main(String[] args)
{
HashMap map = new HashMap();

map.put("a", "zhangsan");
map.put("b", "lisi");
map.put("d", "wangwu");
map.put("e", "zhaoliu");
map.put("f", "yangqi");

for(Iterator iter = map.keySet().iterator();iter.hasNext();)
{
System.out.println(iter.next());
System.out.println( map.get(iter.next()));

}

}
中的
System.out.println(iter.next());
System.out.println( map.get(iter.next()));
如果注释一行运行一行都能成功,两个放一起就不成功了,为什么,求高手指点
Exception in thread "main" java.util.NoSuchElementException
at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
at java.util.HashMap$KeyIterator.next(Unknown Source)
at fx.MapTest.main(MapTest.java:23)
f=wangwu
e=lisi
这是错误我是菜鸟看不懂,求帮助。
我懂了谢谢各位了
展开
 我来答
Leo分享
2012-09-10 · TA获得超过754个赞
知道小有建树答主
回答量:1405
采纳率:0%
帮助的人:767万
展开全部
iter.next()
当遍历到最后一个的时候
正好被iter.next()打印出来了
然后又要打印下一个 这时已经没有下一个了
所以会报错
解决方法有两个
hashtable添加一对key和value
或者用推荐答案的方法
感觉你想表达的也是 先打印key 然后打印对应的value
就用用object方法就行
for(Iterator iter = map.keySet().iterator();iter.hasNext();)
{
Object obj = iter.next();
System.out.println(obj);
System.out.println( map.get(obj));

}
特殊时期ok
2015-10-21 · 超过11用户采纳过TA的回答
知道答主
回答量:43
采纳率:0%
帮助的人:18.4万
展开全部

map

怎么了?使用就可以了啊new HashMap使用就可以了。一般常用的。你没问清楚大哥

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
睢鸠彭泽5d
2012-09-09 · TA获得超过442个赞
知道小有建树答主
回答量:337
采纳率:0%
帮助的人:161万
展开全部
public static void main(String[] args)
{
HashMap map = new HashMap();

map.put("a", "zhangsan");
map.put("b", "lisi");
map.put("d", "wangwu");
map.put("e", "zhaoliu");
map.put("f", "yangqi");

for(Iterator iter = map.keySet().iterator();iter.hasNext();)
{
Object obj = iter.next();
System.out.println(obj);
System.out.println( map.get(obj));

}
}
楼主,你的for循环里面调用了两次iter.next()方法,这是不行的,调用一次迭代一次,你的程序最后当然会报错啊,你的for循环条件还满足,但实际上你的迭代器已经迭代完毕了,所以报错,上面是我帮你修改的代码,希望对你有帮助。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2012-09-10 · TA获得超过751个赞
知道小有建树答主
回答量:376
采纳率:0%
帮助的人:364万
展开全部
java.util.NoSuchElementException

这个错误的意思是没有元素可以迭代
产生错误的原因是你在for 循环中写入两次迭代 iter.next()
这个错误一般是循环到最后一个元素的时候才会报错,
当集合中只有最后一个元素,在第一个iter.next() 的时候是正常的
但是在 第二个 map.get(iter.next()) 的是就没有元素可以迭代了,
所以就报错了,希望对你有帮助,其它楼的解释也都很不错。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乌光QS
2012-09-09 · TA获得超过1365个赞
知道小有建树答主
回答量:464
采纳率:100%
帮助的人:448万
展开全部
两个放一起就相当于你只问一次iter.hasNext(),却叫了两次iter.netxt()。就好像你问:后面还有东西吗?然后连说两次“再来一个”,第一次再来一个的时候有可能已经是最后一个了,第二次说再来一个的时候就没有东西了,于是出错。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式