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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© vipzh 中级黑马   /  2012-12-1 22:48  /  1170 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

map集合用什么方法遍历?给个例子

2 个回复

倒序浏览
Map是一种以键值对的形式存在的集合,其中每个键映射到一个值,几乎所有通用 Map 都使用哈希映射。位于java.util包中。其子类有HashMap,TreeMap。HashMap缺省的情况下是线程非安全的;当多线程访问时可能需要提供同步机制,key和value的值允许为null,键值允许重复,没有顺序。


          普通JAVA类遍历Map集合

          Map map=new HashMap();

map.put("a", "1");

  map.put("b", "2");

map.put("c", "3");



map.keySet();//键集合

map.values();//值集合

map.entrySet();//键值集合



//遍历键,通过键取值

Set set = map.keySet();

for (Object key : set) {

System.out.println("键:"+key+"  值:"+map.get(key));

}

//遍历键集合

Iterator it=map.keySet().iterator();

while(it.hasNext()){

System.out.println("键:"+it.next());

}

//遍历键值集合

Iterator it2=map.entrySet().iterator();

while(it2.hasNext()){

System.out.println(it2.next());

}

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
Map分为两种:HashMap和TreeMap
HashMap:(Person类就不写了,给你主要部分)
public class MapDemo {
public static void main(String[] args) {
  //创建集合
  Map<String,Person> map = new HashMap<String,Person>();
  //创建自定义对象
  Person p1 = new Person("AAA",21);
  Person p2 = new Person("BBB",22);
  Person p3 = new Person("CCC",23);
  Person p4 = new Person("DDD",24);
  Person p5 = new Person("EEE",25);
  Person p6 = new Person("FFF",26);
  //添加元素
  map.put("1:",p1);
  map.put("2:",p2);
  map.put("3:",p3);
  map.put("4:",p4);
  map.put("5:",p5);
  map.put("6:",p6);
  //遍历集合元素
  Set<Map.Entry<String,Person>> set = map.entrySet();
  Iterator<Map.Entry<String,Person>> it = set.iterator();
  while(it.hasNext()){
   Map.Entry<String,Person> m = it.next();
   String key = m.getKey();
   Person value = m.getValue();
   System.out.println(key+value);
  }
}
}
TreeMap:
/*
* TreeMap保证元素的唯一性
* 用Comparetor接口实现compare方法(比较器)
* 比较器比较的是key,String是固定不变的所以没有必要比较,用TreeMap<Person,String>
*/
public class TreeMapDemo {
public static void main(String[] args) {
  //创建集合对象
  TreeMap<Person,String> ts  =  new TreeMap<Person,String>(new Comparator<Person>() {
   public int compare(Person p1,Person p2) {
    int num = p1.getNum()-p2.getNum();
    int num2 = (num==0)?(p1.getName().compareTo(p2.getName())):num;
    return num2;
    }   
  });
  //创建自定义元素
  Person p1 = new Person("孔子", 45);
  Person p2 = new Person("老子", 56);
  Person p3 = new Person("孟子", 50);
  Person p4 = new Person("孙子", 40);
  Person p5 = new Person("庄子", 43);
  Person p6 = new Person("孟子", 50);
  Person p7 = new Person("孙子", 40);
  //添加元素
  ts.put(p1,"1hao");
  ts.put(p2,"2hao");
  ts.put(p3,"3hao");
  ts.put(p4,"4hao");
  ts.put(p5,"5hao");
  ts.put(p6,"6hao");
  ts.put(p7,"7hao");
  //遍历
  Set<Map.Entry<Person,String>> set = ts.entrySet();
  Iterator<Map.Entry<Person,String>> it = set.iterator();
  while(it.hasNext()){
   //再遍历Map.Entry
   Map.Entry<Person,String> m = it.next();
   Person key = m.getKey();
   String value = m.getValue();
   System.out.println(key+"***"+value);
  }
}
}

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

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