黑马程序员技术交流社区

标题: 这两种方式有什么区别 [打印本页]

作者: 马上都有    时间: 2014-4-16 22:45
标题: 这两种方式有什么区别
Set<Entry<String, Integer>> entryset=entry.entrySet();
                  for(Entry<String, Integer> ent:entryset){
                          System.out.println(ent);

Set<Map.Entry<String, Integer>> entryset=entry.entrySet();
                  for(Map.Entry<String, Integer> ent:entryset){
                          System.out.println(ent);

作者: 月光海    时间: 2014-4-16 23:20
  1. Set<Entry<String, Integer>> entryset=entry.entrySet();
  2.                   for(Entry<String, Integer> ent:entryset){
  3.                           System.out.println(ent);
复制代码
没有这个方法把,entrySet方法返回的是包含映射关系的set集合,映射关系是用Map.Entry<K,V>来表示的,你去查下API,只有Map.Entry<K,V>,而没有Entry<K,V>,所以Entry<K,V>是不能放到set集合中的,他不能代表映射关系,我是这么认为的
作者: 孙旌棋    时间: 2014-4-20 16:38
这个是第一种方法, 原理就是把所有的key存到集合里, 然后通过键去到所有的值
  1. import java.util.HashMap;
  2. import java.util.Iterator;
  3. import java.util.Map;
  4. import java.util.Set;

  5. public class SunJingQi {
  6.         public static void main(String[] args) {

  7.                 Map<String, String> map = new HashMap<String, String>();

  8.                 map.put("01", "孙旌棋");
  9.                 map.put("02", "孙旌棋");
  10.                 map.put("03", "孙旌棋");

  11.                 // 先获取Map集合的所有键的Set集合
  12.                 Set<String> keySet = map.keySet();

  13.                 // 有了Set集合,就可以获取其迭代器
  14.                 for (Iterator<String> it = keySet.iterator(); it.hasNext();) {

  15.                         String key = it.next();
  16.                         String value = map.get(key);
  17.                         sop(key + "=" + value);

  18.                 }

  19.         }

  20.         public static void sop(Object obj) {
  21.                 System.out.println(obj);
  22.         }

  23. }
复制代码


作者: 孙旌棋    时间: 2014-4-20 16:40
这个是第二种, 把映射关系存到集合里, 然后取出来, 你问什么是映射关系, 就好像是户口本一样, 我只要拿到户口本, 就知道谁跟谁结婚了一样, 这就是映射关系
  1. import java.util.HashMap;
  2. import java.util.Iterator;
  3. import java.util.Map;
  4. import java.util.Set;

  5. public class SunJingQi {
  6.         public static void main(String[] args) {

  7.                 Map<String, String> map = new HashMap<String, String>();

  8.                 map.put("01", "孙旌棋");
  9.                 map.put("02", "孙旌棋");
  10.                 map.put("03", "孙旌棋");

  11.                 // 取出 Map集合的映射关系,存入到Set集合
  12.                 Set<Map.Entry<String, String>> entrySet = map.entrySet();

  13.                 for (Iterator<Map.Entry<String, String>> it = entrySet.iterator(); it.hasNext();) {

  14.                         Map.Entry<String, String> me = it.next();
  15.                         String key = me.getKey();
  16.                         String value = me.getValue();
  17.                         sop(key + "=" + value);

  18.                 }
  19.         }

  20.         public static void sop(Object obj) {
  21.                 System.out.println(obj);
  22.         }

  23. }
复制代码

作者: 孙旌棋    时间: 2014-4-20 16:42
如果只是为了遍历, 那用这么麻烦, 你问我什么是遍历? 就是把集合里的对象取出来, 使用高级for()循环轻松搞定
  1. import java.util.HashMap;
  2. import java.util.Map;

  3. public class SunJingQi {

  4.         public static void main(String[] args) {

  5.                 HashMap<Integer, String> hm = new HashMap<Integer, String>();

  6.                 hm.put(01, "孙旌棋");
  7.                 hm.put(02, "孙旌棋");
  8.                 hm.put(03, "孙旌棋");

  9. //                Set<Integer> keySet = hm.keySet();
  10. //                for (Integer i : keySet) {

  11.                 for (Integer i : hm.keySet()) {
  12.                         System.out.println(i + "=" + hm.get(i));
  13.                 }

  14. //                Set<Map.Entry<Integer, String>> entrySet = hm.entrySet();
  15. //                for (Map.Entry<Integer, String> me : entrySet) {

  16.                 for (Map.Entry<Integer, String> me : hm.entrySet()) {
  17.                         System.out.println(me.getKey() + "=" + me.getValue());
  18.                 }

  19.         }
  20. }
复制代码





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