黑马程序员技术交流社区

标题: Map集合的总结 [打印本页]

作者: huanxiang0220    时间: 2015-2-23 02:23
标题: Map集合的总结
本帖最后由 huanxiang0220 于 2015-2-23 03:20 编辑

Map(和Collection接口同级的接口)集合  

1.简述:该集合用于存储键值对,一对一对的往里存,但要保证键的唯一性
   2.Map接口的子类对象
     |--HashTable:底层是哈希表数据结构,不可以存入null键和null值,线程同步,效率低
     |--HashMap:底层是哈希表数据结构,可以存入null键和null值,线程不同步,效率高
     |--TreeMap:底层是二叉树数据结构,线程不同步,可以对Map集合中的元素进行排序
和set接口的集合很像,事实上set集合底层就是用了Map集合
   3.共性方法
  1.    (1)增加      
  2.         put(Key key,Value value)        
  3.         putAll(Map<? extends k,? extends v>m)         
  4.    (2)删除      
  5.         clear()      
  6.        remove(Object key)   
  7.    (3)判断      
  8.        containsValue(Object value)      
  9.        containsKey(Object key)   
  10.    (4)获取      
  11.       get(Object key)   
复制代码
重要方法
       Set<key> keySet():               
将Map中的所有键存入到set集合中,因为set具备迭代器
所有通过迭代器方式取出的键,都可通过get()方法来获取对应的值
       Set<Map.Entry<K,V>> entrySet():  
将Map集合中的所有映射关系存入到set集合中,而这个关系的数据类型就是:Map.Entry
  1. public class MapDemo {
  2.     public static void main(String[] args) {
  3.             Map<String, String> map=new HashMap<String, String>();
  4.             //添加元素时,如果添加的key相同,则key对应的后面的value值会覆盖前面的旧值,并且,put()方法
  5.              //会返回原来的旧值,和新添加的新值
  6.            /* System.out.println( map.put("01","张三旧值"));
  7.             System.out.println( map.put("01","张三新值"));*/         
  8.             map.put("01","张三");
  9.             map.put("02","李四");
  10.             map.put("03","王五"); //System.out.println(map);
  11.             
  12.             //将map集合中的映射关系取出,存入到Set集合中
  13.             Set<Map.Entry<String, String>> mapEntries=map.entrySet();
  14.             Iterator<Map.Entry<String, String>> iterator=mapEntries.iterator();
  15.             while(iterator.hasNext())
  16.             {  
  17.                 Map.Entry<String, String> meEntry=iterator.next();//获取Set集合中的映射关系
  18.                 String key=meEntry.getKey();//获取映射关系中的key值
  19.                 String value=meEntry.getValue();//获取映射关系中的value值
  20.                 System.out.println(key+" : "+value);   
  21.             
  22.             }
  23.            // Map.Entry其实也是一个接口,是Map接口中的内部接口
  24.            /* //keySet()方法,获取所有的key集合,并存入到set集合中
  25.             Set<String> set=map.keySet();
  26.             Iterator<String> iterator=set.iterator();
  27.             while(iterator.hasNext())
  28.             {
  29.                 String key=iterator.next();
  30.                 System.out.println("key:"+key+"  value: "+map.get(key));
  31.             }*/
  32.                        
  33.            /* 是否包含指定的键
  34.             System.out.println(map.containsKey("02"));
  35.                 是否包含指定的值
  36.             System.out.println(map.containsValue("张三"));
  37.                 通过key获取value。可以通过get来判断值是否存在
  38.             System.out.println(map.get("03"));
  39.                 获取集合的长度
  40.             System.out.println(map.size());
  41.                 获取集合的所有值
  42.             System.out.println(map.values());
  43.                 通过key删除元素 注意:删除后返回删除成功后的值            
  44.              System.out.println("remove:"+map.remove("03"));//返回王五
  45.                 清除集合中的所有元素
  46.             map.clear();
  47.             System.out.println(map.values());
  48.             map.putAll(map2);
  49.              System.out.println(map.values());
  50.     }
复制代码







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