黑马程序员技术交流社区

标题: 这是小弟在Map集合时遇到的一些问题 希望大神帮忙解答... [打印本页]

作者: qq563426478    时间: 2015-3-1 18:23
标题: 这是小弟在Map集合时遇到的一些问题 希望大神帮忙解答...
一、Map map=new HashMap();
map.put(12,"sd");
为什么提示Map中的put(Object,Object)方法对于(int,String)不适用?

二、"sdfgzxcvasdfxcvdf"获取该字符串中的字母出现的次数。
希望打印的结果:a(1)c(2).....
是不是一定要用TreeMap  用HashMap可以吗?为什么?

三、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
这是错误我是菜鸟看不懂,求帮助。
我懂了谢谢各位了


作者: alvis2015    时间: 2015-3-1 18:34
一,map.put(1,"a");完全可以,没有不适用的问题
二、用两种Map都可以
三、在循环中不能连续两次调用next方法,因为如果元素个数是奇数个的话,会发生越界
作者: sofeel    时间: 2015-3-1 20:11
楼上正解
作者: ㏒假™面具    时间: 2015-3-1 22:39
第一题: JDK5以后可以这样存储,集合中存储的只能是对象,map.put(12,"sd");  执行时,会将12自动装箱,封装成Integer对象
第二题: TreeMap集合会对key值按照字典顺序进行排序,而HashMap只会保证值的唯一性

第三题:在循环语句中不能调用两次next()方法。
             hasNext()做了一次判断。第一次调用指向另一个对象,再次调用就是下一个对象了





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2