首页 > 代码库 > 【JAVA集合框架之Map】

【JAVA集合框架之Map】

一、概述。
1.Map是一种接口,在JAVA集合框架中是一个非常重要的集合。
2.Map一次添加一对元素,所以又称为“双列集合”(Collection一次添加一个元素,所以又称为“单列集合”)
3.Map集合中存放的是一个一个的键值对,集合中存放的元素必须保证键的唯一性。
二、常用方法。
1.添加

 Vput(K key, V value)
          将指定的值与此映射中的指定键关联(可选操作)。

该方法的作用就是向集合中添加一个键值对,并返回一个值;如果键存在,则返回对应的旧值,并以新值取代之;如果键不存在则返回null。所以该方法也是修改的方法。

voidputAll(Map<? extends K,? extends V> m)
          从指定映射中将所有映射关系复制到此映射中(可选操作)。

该方法功能略,但注意泛型上限的使用。比较Collection方法:

 booleanaddAll(Collection<? extends E> c)
          将指定 collection 中的所有元素都添加到此 collection 中(可选操作)。


2.删除

 Vremove(Object key)
          如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。

该方法根据键删除一个键值对,并返回值。如果没有这个键值对,将返回null。

 voidclear()
          从此映射中移除所有映射关系(可选操作)。

该方法功能就是清空集合。
3.判断

 booleancontainsKey(Object key)
          如果此映射包含指定键的映射关系,则返回 true
 booleancontainsValue(Object value)
          如果此映射将一个或多个键映射到指定值,则返回 true

这两个方法,前者判断是否存在指定键,后者判断是否存在指定值。

 booleanisEmpty()
          如果此映射未包含键-值映射关系,则返回 true

该方法用于判断该Map集合是否为空集合。
4.获取。

 Vget(Object key)
          返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null
 intsize()
          返回此映射中的键-值映射关系数。

这两个方法,前者根据指定的键获取对应的值,如果集合中没有指定的键,则返回null;后者获取键值对的个数。

 

以上的方法为基本方法,重点方法在下面。

三、重点:Map集合的三种遍历方式。

1.第一种遍历方式:使用keySet方法。

 Set<K>keySet()
          返回此映射中包含的键的 Set 视图。

该方法会返回一个包含所有键的Set集合。

遍历过程:先得到所有键的集合,遍历集合,根据键得到所有的值。

 1 package p01.traverseDemo01.keySetDemo; 2  3 import java.util.HashMap; 4 import java.util.Iterator; 5 import java.util.Map; 6 import java.util.Set; 7  8 public class KeySetDemo { 9 10     public static void main(String[] args) {11         Demo01();12     }13 14     private static void Demo01() {15         Map<Integer,String>map=new HashMap<Integer,String>();16         map.put(1, "wangcai");17         map.put(2, "xiaoqiang");18         map.put(3, "xiaoming");19         20         Set<Integer>set=map.keySet();21         for(Iterator<Integer>it=set.iterator();it.hasNext();)22         {23             Integer key=it.next();24             String value=http://www.mamicode.com/map.get(key);25             System.out.println(key+":"+value);26         }27         28     }29 30 }
View Code

应当注意,结果是无序的,这是因为采用了HashMap作为示例,HashMap底层的数据结构是哈希表,存储元素的时候有自己的规则,所以无序。

2.第二种便利方式:使用entrySet方法。

 Set<Map.Entry<K,V>>entrySet()
          返回此映射中包含的映射关系的 Set 视图。

此方法返回值也是一个Set集合,但是存储的内容是Map.Entry对象。Map.Entry是什么东西?

JDK1.6API的解释如下:

嵌套类摘要
static interfaceMap.Entry<K,V>
          映射项(键-值对)。

【JAVA集合框架之Map】