黑马程序员技术交流社区

标题: Map集合的三种遍历方法 [打印本页]

作者: Dej@vu    时间: 2013-7-28 11:48
标题: Map集合的三种遍历方法
第一种:最常规的一种遍历方法,最常规就是最常用的,虽然不复杂,但很重要,这是我们最熟悉的
  1. public class TestMap {

  2.     public static void main(String[] args) {
  3.         Map<String, Student> map = new HashMap<String, Student>();
  4.         Student s1 = new Student("宋江", "1001", 38);
  5.         Student s2 = new Student("卢俊义", "1002", 35);
  6.         Student s3 = new Student("吴用", "1003", 34);
  7.       
  8.         map.put("1001", s1);
  9.         map.put("1002", s2);
  10.         map.put("1003", s3);

  11.         Map<String, Student> subMap = new HashMap<String, Student>();
  12.         subMap.put("1008", new Student("tom", "1008", 12));
  13.         subMap.put("1009", new Student("jerry", "1009", 10));
  14.         map.putAll(subMap);

  15.         work(map);
  16.         workByKeySet(map);
  17.         workByEntry(map);
  18.     }
复制代码
第二种:利用keyset进行遍历,它的优点在于可以根据你所想要的key值得到你想要的 values,更具灵活性
  1. public static void work(Map<String, Student> map) {
  2.         Collection<Student> c = map.values();
  3.         Iterator it = c.iterator();
  4.         for (; it.hasNext();) {
  5.             System.out.println(it.next());
  6.         }
  7.     }

  8.   //利用keyset进行遍历,它的优点在于可以根据你所想要的key值得到你想要的 values,更具灵活性!!

  9.     public static void workByKeySet(Map<String, Student> map) {
  10.         Set<String> key = map.keySet();
  11.         for (Iterator it = key.iterator(); it.hasNext();) {
  12.             String s = (String) it.next();
  13.             System.out.println(map.get(s));
  14.         }
  15.     }
复制代码
第三种:比较复杂的一种遍历,但很灵活 它的灵活性太强了,想得到什么就能得到什么
  1. public static void workByEntry(Map<String, Student> map) {
  2.         Set<Map.Entry<String, Student>> set = map.entrySet();
  3.         for (Iterator<Map.Entry<String, Student>> it = set.iterator(); it.hasNext();) {
  4.             Map.Entry<String, Student> entry = (Map.Entry<String, Student>) it.next();
  5.             System.out.println(entry.getKey() + "--->" + entry.getValue());
  6.         }
  7.     }
  8. }

  9. class Student {

  10.     private String name;
  11.     private String id;
  12.     private int age;

  13.     public Student(String name, String id, int age) {
  14.         this.name = name;
  15.         this.id = id;
  16.         this.age = age;
  17.     }
复制代码

作者: longlangcx    时间: 2013-7-28 13:31
第二种是keyset,第三种是entryset,第一种是啥?貌似是在存元素而不是在遍历啊{:soso_e132:}

另外,咱俩头像还真有缘{:soso_e113:}
作者: 小时晚er    时间: 2013-7-28 13:47
Map的常用方法:
put(object key,objectv value)  以键-值对的方式存储
get(object key)根据键得到相关的value值,如果没有就返回null
remove(object key) 根据指定的键来删除映射的键值对
size() 返回元素的个数
keyset()返回键的集合
values()返回值的集合,返回类型是collection
containsKey(object key) 如果存在指定的键映射的键值对,返回true
我就知道这些,但是楼主说的 workByEntry(map);
和第三种方法,没太看懂。。。我才疏学浅,还请楼主能回复,教教我。。呵呵··
作者: 神之梦    时间: 2013-7-29 22:57
小时晚er 发表于 2013-7-28 13:47
Map的常用方法:
put(object key,objectv value)  以键-值对的方式存储
get(object key)根据键得到相关的va ...

楼主说的第一个方法,是将map集合中键对应的值,全部存入一个collection集合中,再用迭代的方式获取值,但这种方式应该不能得到所有的键。
第二种和第三种就是视频中老师讲的两种获取方式,一种是keySet方法的,一种是entrySet方法的,如果还没看到的话,应该很快就会明白了
作者: penpen    时间: 2013-7-31 00:40
又学习了




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