Map接口及其重要实现类的用法

来源:互联网 发布:网易我的世界java 编辑:程序博客网 时间:2024/05/27 06:13

Map接口

Map中的每个成员方法由一个关键字(key)和一个值(value)构成。Map接口不直接继承于Collection接口,因为它包装的是一组成对的“键-值”对象的集合,而且在Map接口的集合中也不能有重复的key出现,因为每个键只能与一个成员元素相对应。

一、Map接口的子接口以及主要实现类有

子接口:Bindings、ConcurrentMap、ConcurrentNavigableMap、MessageContext、LogicMessageContext、NavigableMap、SOAPMessageMap、SortedMap

实现类:AbstractMap, Attributes, AuthProvider, ConcurrentHashMap, EnumMap,ConcurrentSkipListMap,HashMap, Hashtable, IdentityHashMap, LinkedHashMap, PrinterStateReasons,Properties, Provider, RenderingHints, SimpleBindings, TabularDataSupport,TreeMap, UIDefaults,WeakHashMap

二、Map接口中定义的方法清单:

Map中定义的方法说明: 

在Map接口中定义的通用方法并不是很多。

(1)添加和删除Map中的某个元素

put(K, V):将给定的“键-值”对放入到给定的Map当中 
putAll(Map<? extends K, ? extends V):将指定的Map中的“键-值”对放入到给定的Map当中 
remove(Object key):从该集合中移除指定的对象,并返回对应的value 
clear():清空Map中的所有对象 

(2)查询与Map有关的数据

int size():返回此Map中“键-值”对的个数 
boolean isEmpty():判断此Map中“键-值”对的个数是否为0 
boolean containsKey(Object key):测试此Map中是否有该key 
boolean containsValue(Object value):测试此Map中是否包含该value 
V get(Object key):通过指定的key查询Map中对应的value 
Collection<Object value> values():取得Map中所有的value 
Set<Object key> keySet():取得当前Map中key的集合 
Set<Entry<K, V>> entrySet():取得当前Map中entry的集合

三、HashMap与Hashtable的区别:

Hashtable实现Map接口,继承自古老的Dictionary类,实现一个key-value的键值映射表。任何非空的(key-value)均可以放入其中。

区别主要有三点:

1、Hashtable是基于陈旧的Dictionary实现的,而HashMap是基于Java1.2引进的Map接口实现的; 
2、Hashtable是线程安全的,而HashMap是非线程安全的,我们可以使用外部同步的方法解决这个问题。 
3、HashMap可以允许你在列表中放一个key值为null的元素,并且可以有任意多value为null,而Hashtable不允许键或者值为null。

四、遍历MAP的四种方法:

public static void main(String[] args) {        Map<String, String> map = new HashMap<String, String>();        map.put("1", "value1");        map.put("2", "value2");        map.put("3", "value3");        // 第一种:普遍使用,二次取值        System.out.println("通过Map.keySet遍历key和value:");        for (String key : map.keySet()) {            System.out.println("key= " + key + " and value= " + map.get(key));        }        // 第二种        System.out.println("通过Map.entrySet使用iterator遍历key和value:");        Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();        while (it.hasNext()) {            Map.Entry<String, String> entry = it.next();            System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());        }        // 第三种:推荐,尤其是容量大时        System.out.println("通过Map.entrySet遍历key和value");        for (Map.Entry<String, String> entry : map.entrySet()) {            System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());        }        // 第四种        System.out.println("通过Map.values()遍历所有的value,但不能遍历key");        for (String v : map.values()) {            System.out.println("value= " + v);        }    }


0 0