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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public class StudyDemo {

        public static void main(String[] args) {
//                Demo1();
//                Demo2();
//                Demo3();
//                Demo4();
               
               
        }

        private static void Demo4() {
                Map<String,Integer>map = new HashMap<String,Integer>();
                map.put("张三",20);       
                map.put("李四",21);
                map.put("王五",22);
                map.put("赵六",19);
                Set<Entry<String,Integer>>set = new HashSet();                        //获取Map中所有Entry组成的Set集合。
                for(Entry<String,Integer>e:set)                                                        //迭代Set集合,可以获取每一个Entry对象。
                        System.out.println(e.getKey()+":"+e.getValue());        //通过Set集合获取每一个键对象和值对象。
        }
以上代码没报错,Demo1,2,3是我之前抽取的方法,Demo4就是不能执行的代码,之前都没问题,但到了4就不行了。哪位高手给点意见。

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

6 个回复

正序浏览
这个要看是报什么异常,光看代码不是解决问题有效方法。
回复 使用道具 举报
Set<Entry<String,Integer>>set = new HashSet();                        //获取Map中所有Entry组成的Set集合。

此句有误,(语法没有错误,只是Entry使用方法有误),
获取键值对的映射应该写成:
Set<Entry<String,Integer>>set =map.entrySet();
回复 使用道具 举报
本帖最后由 魏涞 于 2012-5-10 23:34 编辑

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class StudyDemo {
         
    public static void main(String[] args) {
//                Demo1();
//                Demo2();
//                Demo3();
                Demo4();
            
            
    }

    private static void Demo4() {
             Map<String,Integer>map = new HashMap<String,Integer>();
             map.put("张三",20);        
            map.put("李四",21);
             map.put("王五",22);
             map.put("赵六",19);
             Set<Entry<String,Integer>>set =map.entrySet();                        //这里不应该在new一个HashSet(),而是用已有的map的entrySet()f方法获取。
             for(Entry<String,Integer> e:set)                                                        
                     System.out.println(e.getKey()+":"+e.getValue());        
     }
}

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
Set<Entry<String,Integer>>set = new HashSet();                        //获取Map中所有Entry组成的Set集合。

此句有误,(语法没有错误,只是Entry使用方法有误),
获取键值对的映射应该写成:
Set<Entry<String,Integer>>set =map.entrySet();
回复 使用道具 举报
Map集合的两种取出方式:
1.Set<k> keySet = map.keySet();将Map中所有的键存入到Set集合。
  由于Set具备迭代器,用迭代方式取出所有键,再由get方法,获取每一个键对应的值。

  原理:将Map集合转成Set集合,元素为键,再通过迭代器取出值。

2.Set< Map.Entry<k,v> > entrySet:
  将Map集合中的映射关系存入Set集合中,这个关系的数据类型为Map.Entry。
------------------------------------------------------------------------------------------------------------------------------
楼主的代码需要改一下:
Set<Map.Entry<String,Integer>>set =map.entrySet();
应该就可以了。

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
Set<Entry<String,Integer>>set = new HashSet();  //改成Set<Entry<String,Integer>>set =map.entrySet(); 这样就可以获取map集合里的set集合

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

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