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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 朱晓杰 中级黑马   /  2013-5-11 22:32  /  1442 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 朱晓杰 于 2013-5-11 22:31 编辑

Map总结

1.Map概述
映象(Map)用于存放许多关键字/值对。根据关键字,就能够找到它对应的一个值。
键和值都是对象,键必须是唯一的,但值可以是重复的,而且有一些映射可以接收null键和null值。

Map方法摘要:

Map接口提供三种collection 视图,HashTable、HashMap、TreeMap。
      HashTable:底层是哈希表数据结构,不允许null,即null value和null key,线程同步(JDK1.0)

     HashMap底层是哈希表数据结构 ,允许null,即null valuenull key,线程不同步(JDK1.2),HashMap并不保证元素的顺   
序,因此元素添加HashMap中的顺序并不一定就是它们被迭代器读出的顺序。
     TreeMap:底层是二叉树数据结构 ,线程不同步(JDK1.2), 它可以以排序的方式存储键值对,并且允许快速查                    
找。TreeMap与HashMap不同,保证了它的元素以键的升序或指定排序规则存储
         
     HashMapTreeMap的区别:
          Set类似,HashMap的速度通常都比TreeMap快,只有在需要排序的功能的时候,才使用TreeMap

2.Map遍历
  1. /*
  2. Map遍历方式:1.keySet 2.entrySet 3.增强性for循环
  3. */
  4. import java.util.*;
  5. import static java.lang.System.*;
  6. public class HashMapDemo {

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

  8.                 HashMap<String,Integer> hm = new HashMap<String,Integer>();
  9.                
  10.                 //添加元素
  11.                 hm.put("zxj", 22);
  12.                 hm.put("wxp", 19);
  13.                 hm.put("hyd", 20);
  14.                 hm.put("lv", 11);
  15.                
  16.                 //keySet
  17.                 Set<String> keySet = hm.keySet();//返回所有键的集合
  18.                
  19.                 Iterator<String> key = keySet.iterator();
  20.                
  21.                 while(key.hasNext()){
  22.                         String jian = key.next();//键
  23.                         Integer zhi = hm.get(jian);//值
  24.                         out.println("keySet..." + jian + "=" + zhi);
  25.                 }
  26.                
  27.                 //entryset
  28.                 Set<Map.Entry<String, Integer>> entrySet = hm.entrySet();//返回所有键值对的映射关系
  29.                
  30.                 Iterator<Map.Entry<String, Integer>> entry = entrySet.iterator();
  31.                
  32.                 while(entry.hasNext()){
  33.                         Map.Entry<String, Integer> map = entry.next();
  34.                         String jian = map.getKey();//键
  35.                         Integer zhi = map.getValue();//值
  36.                         out.println("entrySet..." + jian + "=" + zhi);
  37.                 }

  38.                 //增强性for循环
  39.                  for (Map.Entry<String, Integer> entry1 : hm.entrySet()) {  
  40.             String jian = entry1.getKey().toString();  
  41.             String zhi = entry1.getValue().toString();  
  42.             out.println("for..." + jian + "=" + zhi);
  43.         }  
  44.         }
  45. }
复制代码
3.Map排序
  Map排序,可以按key排序,也可以按value排序,示例代码如下:
  1. /*
  2. Map排序,可以按照Key排序,也可以按照Value排序
  3. */
  4. import java.util.*;
  5. import static java.lang.System.*;
  6. class HashMapSortDemo
  7. {
  8.         public static void main(String[] args)
  9.         {
  10.                 Map<String, Integer> maps = new HashMap<String, Integer>();  
  11.         maps.put("orange", 8);  
  12.         maps.put("banana", 7);  
  13.         maps.put("pear", 1);  
  14.         maps.put("apple", 5);
  15.                 maps.put("watermelon",7);
  16.                
  17.                 out.println("排序前:");
  18.                 Set<Map.Entry<String,Integer>> entrySet = maps.entrySet();
  19.                 Iterator<Map.Entry<String,Integer>> entryIt = entrySet.iterator();
  20.                 while(entryIt.hasNext()){
  21.                         Map.Entry<String,Integer> entry = entryIt.next();
  22.                         String key = entry.getKey();//键
  23.                         Integer value = entry.getValue();//值
  24.                         out.println(key + "..." + value);
  25.                 }

  26.                 out.println("排序后:");
  27.                 List<Map.Entry<String, Integer>> info = new ArrayList<Map.Entry<String, Integer>>(maps.entrySet());
  28.                 Collections.sort(info, new Comparator<Map.Entry<String, Integer>>() {  
  29.             public int compare(Map.Entry<String, Integer> obj1, Map.Entry<String, Integer> obj2) {  
  30.                 //return obj1.getKey().compareTo(obj2.getKey());//按key升序排序  
  31.                 return obj2.getValue() - obj1.getValue(); //按value降序排序  
  32.             }  
  33.         });  
  34.   
  35.         for (int j = 0; j < info.size(); j++) {  
  36.             out.println(info.get(j).getKey() + "..." + info.get(j).getValue());  
  37.         }  
  38.         }
  39. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 继续努力

查看全部评分

3 个回复

倒序浏览
Map统计一个字符串中的次数,参考一下代码:
答题奖4技术分(需完整代码) !终于给整出来了!
http://bbs.itheima.com/thread-49178-1-1.html

回复 使用道具 举报
总结不够充分,把properties这个类也整出来,自己查阅资料
回复 使用道具 举报
曹睿翔 发表于 2013-5-12 09:43
总结不够充分,把properties这个类也整出来,自己查阅资料

是啊,properties在项目中经常用到呢,谢版主了!后面加上!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马