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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙铭泽 中级黑马   /  2012-8-22 10:20  /  5601 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MapTest {
public static void main(String[] args) {
  Map<String, Student> map = new HashMap<String, Student>();
  Student s1 = new Student("许文强", 20);
  Student s2 = new Student("丁力", 30);
  Student s3 = new Student("冯程程", 25);
  map.put("sh002", s1);
  map.put("sh003", s2);
  map.put("sh001", s3);
   Set<String> keySet = map.keySet();///////////////////////////////////////////////////////////////////////////////////////////////////////
  Iterator<String> it = keySet.iterator();
  while (it.hasNext()) {
   String key = it.next();
   Student value = map.get(key);
   System.out.println(key + "***" + value.getName() + "***"
     + value.getAge());
  }
  System.out.println("*******************");
  Set<Map.Entry<String, Student>> setMap = map.entrySet();
  Iterator<Map.Entry<String, Student>> it2 = setMap.iterator();
  while (it2.hasNext()) {
   Map.Entry<String, Student> me = it2.next();
   String key = me.getKey();
   Student value = me.getValue();
   System.out.println(key + "***" + value.getName() + "***"
     + value.getAge());
  }
}
}


我标注的哪一行中map类不是跟set没关系吗。下一步变成通过迭代器遍历了呢。

评分

参与人数 1技术分 +1 收起 理由
田建 + 1

查看全部评分

4 个回复

正序浏览
看看。。
回复 使用道具 举报
学习过了
回复 使用道具 举报
mport java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MapTest {
public static void main(String[] args) {
  Map<String, Student> map = new HashMap<String, Student>();
  Student s1 = new Student("许文强", 20);
  Student s2 = new Student("丁力", 30);
  Student s3 = new Student("冯程程", 25);
  map.put("sh002", s1);
  map.put("sh003", s2);
  map.put("sh001", s3);
   Set<String> keySet = map.keySet();       //Map集合和Set集合本身是没有关系,但是你要遍历Map集合中存入的数据就用到迭代器,在你查API文档时发现Map集合中并没有迭代器,那这时候怎么办呢。Map中提供了KeySet()方法和entrySet()方法建立桥梁和Set就有关系,就是为了拿到Set集合中的Iterrator迭代器,遍历Map中的数据。还可以这样理解,就是Map集合中没有迭代去,那怎么遍历呢?,想到Set集合有Iterator迭代器,那就要想办法把Map集合转变成Set集合,而这个办法就使用Map中KeySet()方法和entrySet()方法,转变后再用Iterator遍历集合中数据。
你只要记住,遍历Map集合中的数据用到迭代器就通过KeySet()方法和entrySet()方法获取,再遍历
  Iterator<String> it = keySet.iterator();
  while (it.hasNext()) {
   String key = it.next();
   Student value = map.get(key);
   System.out.println(key + "***" + value.getName() + "***"
     + value.getAge());
  }
  System.out.println("*******************");
  Set<Map.Entry<String, Student>> setMap = map.entrySet();
  Iterator<Map.Entry<String, Student>> it2 = setMap.iterator();
  while (it2.hasNext()) {
   Map.Entry<String, Student> me = it2.next();
   String key = me.getKey();
   Student value = me.getValue();
   System.out.println(key + "***" + value.getName() + "***"
     + value.getAge());
  }
}
}

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1

查看全部评分

回复 使用道具 举报
Map集合的两种遍历方式
1.通过keySet方法返回由键组成的集合,迭代该集合的元素就拿到了所有的键,再调用get
方法根据键拿到值
2.通过entrySet 方法返回键值映射关系组成的集合,迭代该集合就拿到了一个个的键值映
射关系,通过getKey方法拿到键,通过getValue方法拿到值。
   

QQ截图20120822103245.png (1.83 KB, 下载次数: 77)

QQ截图20120822103245.png

QQ截图20120822103254.png (1.56 KB, 下载次数: 110)

QQ截图20120822103254.png

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

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