浅谈Map集合的特点和基本方法的应用

16 篇文章 0 订阅
5 篇文章 0 订阅

      在java的util包中提供了集合中最常见的接口和类,最常见的集合类就是List和Map。严格意义上来区分它属于接口的范畴,因为在集合中很多子类是用来实现此接口的。但是在实际应该用和操作时,也被成为类也不为过,它具有类所具有的属性和方法。List的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象元素列表。List 适用于按数值索引访问元素的情况。

       Map集合中常见的三个子接口:

             Map


               |--Hashtable :底层数据结构是是哈希表结构,该集合是线程同步的,效率低
                               此类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以 用作键或值用作键的对象必须实现hashCode 方法和 equals 方法  
                       
               |--HashMap: 底层也是哈希表数据结构,并允许使用 null 值和 null 键,此集合线程是不同步   效率高
               |--TreeMap:  底层是二叉树数据结构,线程不同步,可以用于给Map集合中的键进行排序      

不难发现,Set集合的特点和Map集合的特点非常相似,其实,Set底层就是使用了Map集合,它的很多方法都是调用Map集合的。


      与List中的ArrayList进行对比,ArrayList给元素加索引方便存取,而Map既有索引,又有元素,

Map 集合类用于存储元素对(称作“键”和“值”)。 在java.util包中 ,接口Map<K,V>  K是指key,V是Value,在API文档中的定义是public interfaceMap<K,V> , 将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。

 


 Map集合中常见的基本方法分为添加,删除,判断和获取,如下所示:

               <1>.添加:
                       a.
                           返回值类型  V     put(K, V )
                                 将指定的值与此映射中的指定键关联
                       b.
                          返回值类型 void    putAll(Map<? extends K,? extends V> m) 
                               从指定映射中将所有映射关系复制到此映射中


               <2>.删除:
                           返回值类型 void   clear() 从此映射中移除所有映射关系

 

               <3>.判断:
                      a.判断Key的存在:
                            返回值类型  boolean    containsKey(Object key)
                                 如果此映射包含指定键的映射关系,则返回 true
                      b.判断Value的存在:
                            返回值类型 boolean     containsValue(Object value)
                                 如果此映射将一个或多个键映射到指定值,则返回 true


               <4>.获取:
                     a.
                         返回值类型  V     get(Object key)
                            返回指定键所映射的值,若此映射不包含该键的映射关系,则返回null
                      b.
                        返回值类型  int    size() 
                            返回此映射中的键-值映射关系数
                      c.
                         返回值类型 Collection<V>    values()
                             返回此映射中包含的值的 Collection 视图


                  <5>  重点:
                         1.  entrySet()   返回此映射中包含的映射关系的 Set 视图。
                         2.  keySet()     返回此映射中包含的键的 Set 视图


方法应用代码示例:

package com.itheima.day16;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

/**
 * @author Alan
 * @date 2014年6月13日 

 */


 public class MapDemo01 {

    public static void main(String[] args) {
        Map<Integer,String> map = new HashMap<Integer,String>();
        
        //1.添加元素
        
        //注意特殊:当存入相同的键时,新的值会替换旧的值,put会在以下的第一行返回null,因为之前的集合中 是没有值的,

        //所以会返回null,原因是它会返回原来的值


        System.out.println("put:"+map.put(01,"Abby"));        //运行结果 put:null
        System.out.println("put:"+map.put(01,"zhangsan"));  //运行结果 put:Abby
        map.put(01,"Abby");
        map.put(02,"Michael");
        map.put(03,"Alan");
        
        
        
        //2.调用containsKey()方法,判断是否有02,即判断指定的Key是否存在,此例中返回true
        
        System.out.println("containsKey:"+map.containsKey(05));


        
        //3.删除。(若没有要删除的元素,就直接返回null,若该元素存在,在删除完键之后,返回的是键所对应的值)

         System.out.println("remove:"+map.remove(02)); 
       


        //4.打印删除后的集合
        System.out.println(map);
    
        
        //5.获取  (若没有要查找的值,就会返回null,用get()方法,也可以判断键来确定是否存在对应的值)
         System.out.println("get:"+map.get(01));
        
        //6.特殊的一种情况,可以通过get方法的返回值来判断一个键是否存在,通过返回null来判断
        //需要注意的是:在Hashtable中是不可添加空的key或Value的,因为其不允许null键和null值的

         map.put(null,"Jay");
         System.out.println("get:"+map.get(null));
        
         //7.获取map集合的所有值
         Collection<String> coll = map.values();
         System.out.println(coll);
         System.out.println(map);
    }

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值