黑马程序员技术交流社区

标题: hashmap键值的问题(int类型循环打印问题) [打印本页]

作者: 沈样    时间: 2012-1-16 23:08
标题: hashmap键值的问题(int类型循环打印问题)
本帖最后由 沈样 于 2012-1-18 14:14 编辑

Map map2 = new HashMap();
                   for(int i=1;i<=10;i++){
                     map2.put(i,i);
                   }
                 System.out.print(map2);
                 for(Object key:map2.keySet()){
                         System.out.println(key+":"+map2.get(key));
                 }

这里存int数据可以,但是这里打印,为什么一直要用Object不能用int或者int 的包装类,如是存的是String可以用String类型打印,不知道这里是什么原理
                 
               

该贴已经同步到 沈样的微博
作者: 孙玉伟    时间: 2012-1-16 23:25
因为系统打印默认是String类型,而你传给key的类型Object的话有自带的方法toString也可以转换成字符串,所以这两个都可以的。。
作者: 黄秋    时间: 2012-1-17 02:11
并不是System.out.println不能用int,如 System.out.println(2) 是可以的,而是语句:
for(Object key:map2.keySet())
keySet()是一集合,key是其中一元素,应为Object 类型,不能是int。
作者: 黄秋    时间: 2012-1-17 02:39
因JDK5 后,可以定义什么类型的数据放入容器,所以下面这样更好:
  1. public static void main(String[] args){
  2.            Map<Integer,Integer> map2 = new HashMap<Integer,Integer>();
  3.            for(int i=1;i<=10;i++){
  4.                  map2.put(i,i);
  5.            }
  6.                 System.out.println(map2);
  7.                 System.out.println(2);
  8.                 for(Integer key:map2.keySet()){
  9.                          System.out.println(key+":"+map2.get(key));
  10.                 }
  11.         }
复制代码





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