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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© liang926 中级黑马   /  2014-8-10 22:12  /  1738 人查看  /  10 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 liang926 于 2014-8-14 00:36 编辑

  1. /*
  2. * Map集合的获取方式
  3. */
  4. import java.util.*;
  5. public class MapDemo1 {
  6.         public static void main(String[] args) {
  7.                 method();
  8.                 System.out.println("*******下面是 第二种entrySet()方法*********************");
  9.                 method_1();
  10.         }
  11.         /*
  12.          * 第二种entrySet()方法
  13.          */
  14.         private static void method_1(){
  15.                 Map<String,Integer> map = new HashMap<String,Integer>();
  16.                 map.put("a", 1);
  17.                 map.put("b", 2);
  18.                 map.put("c", 3);
  19.                 map.put("d", 4);
  20.                 //使用Map接口方法entrySet,获取键值对映射关系对象Entry,
  21.                 //对象存储到Set集合
  22.                 Set<Map.Entry<String, Integer>> set = map.entrySet();
  23.                 //迭代器,迭代Set集合
  24.                 Iterator<Map.Entry<String, Integer>> it = set.iterator();
  25.                 while(it.hasNext()){
  26.                         //it.next()获取出来的是什么,键值对映射关系Map.Entry
  27.                         Map.Entry<String, Integer> me = it.next();
  28.                         //利用键值对映射关系对象中的方法getKey getValue
  29.                         String key = me.getKey();
  30.                         Integer value = me.getValue();
  31.                         System.out.println(key+"....."+value);
  32.                 }
  33.                
  34.         }
  35.         
  36.         
  37.         /*
  38.          * 第一种keySet()方法
  39.          */
  40.         private static void method(){
  41.                 Map<String,Integer> map = new HashMap<String, Integer>();
  42.                 map.put("a", 1);
  43.                 map.put("b", 2);
  44.                 map.put("c", 3);
  45.                 map.put("d", 4);
  46.                
  47.                 Set<String> set = map.keySet();//ZZZ
  48.                 //迭代Set集合
  49.                 Iterator<String> it = set.iterator();
  50.                 while(it.hasNext()){
  51.                         
  52.                         String key = it.next();//it.next方法,返回的是String类,Map集合中的键
  53.                         
  54.                         Integer value = map.get(key);//通过Map集合的get()方法,传递键,获取值
  55.                         
  56.                         System.out.println(key+"...."+value);
  57.                         
  58.                 }
  59.         }
  60. }
复制代码


请问这两中方式各自的优缺点,在什么情况下用哪一种会比较合适?
我觉得KeySet()方法的代码能比entrySet的代码简洁些,KeySet()方法我更能接受,不知两者比较还有哪方面的优点,谢谢大家的指导!

10 个回复

倒序浏览
看你的需求了,一个只能取出值,一个能取出键值对
回复 使用道具 举报
相对来说keySet是比entrySet简洁点,其实用任何一个都一样,到目前为止还没遇到只能用一种的
回复 使用道具 举报
键值对在Map内部就是以Map.entry的形式存在的,对键值对的操作也就是对Map.entry的操作,包括你调用get方法,取出keySet,都离不开Map.Entry。所以,从效率上来说,Map.Entry会更高一些啦
回复 使用道具 举报
我比较喜欢用Map.Entry。。。。
回复 使用道具 举报
这两种方法的最终目的就是获取键值对,用哪一个都行
回复 使用道具 举报
sdfe 初级黑马 2014-8-12 11:42:12
7#
我觉得keyset要灵活一些。
回复 使用道具 举报
我个人觉得没必要研究这么深
回复 使用道具 举报
通过获得键的set集合和键值映射来实现的
回复 使用道具 举报
看心情,追求效率的话用entry。
回复 使用道具 举报
entrySet比KeySet效率高
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马