A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 沈样 黑马帝   /  2012-1-16 23:08  /  3454 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 沈样 于 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类型打印,不知道这里是什么原理
                 
               

该贴已经同步到 沈样的微博

评分

参与人数 1技术分 +1 收起 理由
祁焱 + 1

查看全部评分

3 个回复

倒序浏览
因为系统打印默认是String类型,而你传给key的类型Object的话有自带的方法toString也可以转换成字符串,所以这两个都可以的。。

评分

参与人数 1技术分 +1 收起 理由
祁焱 + 1 赞一个!

查看全部评分

回复 使用道具 举报
并不是System.out.println不能用int,如 System.out.println(2) 是可以的,而是语句:
for(Object key:map2.keySet())
keySet()是一集合,key是其中一元素,应为Object 类型,不能是int。
回复 使用道具 举报
因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.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
祁焱 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马