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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© SenGoo 中级黑马   /  2014-10-20 21:46  /  1933 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Map集合不就两种提取方式吗?一个是Set,一个是entrySet,谁能详细说一下第三种啊!

9 个回复

倒序浏览
/*
Map的三种取出方式:
1.keySet-------取出原理:将map集合转成set集合,再通过迭代器取出
               步骤:将所有的键值存入到set中,通过get方法获取键值所对应的value
2.entrySet-----取出原理:将集合中的映射关系存入到set集合中,这个关系的数据类型
                         就是Map.Entry
               步骤:将键值的映射关系存入到set集合中,类型是Map.Entry
                                 通过Map.Entry对象的getKey()与getValue()获取键与值
3.values()方法
*/
import java.util.*;

class MapDemo2
{
        public static void main(String[] args)
        {
                Map<String,String> map = new HashMap<String,String>();
               
                map.put("01","zhangsan1");
                map.put("02","zhangsan2");
                map.put("03","zhangsan3");
                map.put("04","zhangsan4");
                map.put("03","zhangsan5");//键值相同时,存入后存的值

                //1.-----keySet方式下的取出方法
                //将所有的键值存入到Set中,再通过取出键取出对应的值
                Set<String> keyset = map.keySet();
                Iterator<String> it = keyset.iterator();
                while(it.hasNext())
                {
                        String key = it.next();
                        System.out.println(key+keyset.get(key));
                }
                //此处也可用增强for循环,1.5版本以后
                /*for(Iterator<String> it = keySet.iterator();it.haNext();)
                  {
                          System.out.println(it.next()+keyset.get(key));
                  }
                */



                //2.------Entry方式下的取出方法
                Set<Map.Entry<String,String>>  entrySet = map.entrySet();
                Iterator<Map.Entry<String,String>> it =  entrySet.iterator();
                while(it.hasNext())
                {
                        Map.Entry<String,String> me = it.next();
                        String key = me.getKey();
                        String value = me.getValue();
                        System.out.println("key:"+key+"value:"+value);
                }
        

                //3.-----values()
                Collection<String> co = map.values();
                for(Iterator<String> it = keySet.iterator();it.haNext();)
                  {
                          String s = (String)it.next();
                          System.out.println(s);
                  }
        }
}
回复 使用道具 举报 1 0
value 貌似只能取出值 。不能取出键啊
回复 使用道具 举报
这个可以参考API

严格来说只有一种取出方式,是get。但是有两种迭代方式,一个是keySet,一个是entrySet。希望对你有所帮助
回复 使用道具 举报
非常感谢!
回复 使用道具 举报
qq8921310 发表于 2014-10-21 00:43
value 貌似只能取出值 。不能取出键啊

Value就是值不是键!
回复 使用道具 举报
SenGoo 中级黑马 2014-10-21 09:43:08
7#
diaolinan 发表于 2014-10-20 22:11
/*
Map的三种取出方式:
1.keySet-------取出原理:将map集合转成set集合,再通过迭代器取出

很详实,谢谢!
回复 使用道具 举报
SenGoo 中级黑马 2014-10-21 11:39:20
8#
diaolinan 发表于 2014-10-20 22:11
/*
Map的三种取出方式:
1.keySet-------取出原理:将map集合转成set集合,再通过迭代器取出

3......valus是不是还少一句Set<String> keyset = map.keySet();?
回复 使用道具 举报
SenGoo 发表于 2014-10-21 11:39
3......valus是不是还少一句Set keyset = map.keySet();?

第三种代码:
Collection<String> co = map.values();
for(Iterator<String> it = co.iterator();it.hasNext();)
{
    String s = (String)it.next();
    System.out.println(s);
}
回复 使用道具 举报
SenGoo 中级黑马 2014-10-21 16:08:59
10#
diaolinan 发表于 2014-10-21 15:31
第三种代码:
Collection co = map.values();
for(Iterator it = co.iterator();it.hasNext();)

也就是说将Map的值转换成Collection集合!再迭代出来吧?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马