Java API —— Map接口
1、Map接口概述
· 将键映射到值的对象
· 一个映射不能包含重复的键
· 每个键最多只能映射到一个值
2、Map接口和Collection接口的不同
· Map是双列的;Collection是单列的
· Map的键唯一;Collection的子体系Set是唯一的
· Map集合的数据结构值针对键有效,跟值无关;Collection集合的数据结构是针对元素有效
3、Map集合的功能概述
1)添加功能
V put(K key,V value):添加元素(替换或修改功能)。
如果键是第一次存储,就直接存储元素,返回null
如果键不是第一次存在,就用新的值把以前的值替换掉,返回以前的值
2)删除功能
void clear():移除所有的键值对元素
V remove(Object key):根据键删除键值对元素,并把值返回
3)判断功能
boolean containsKey(Object key):判断集合是否包含指定的键
boolean containsValue(Object value):判断集合是否包含指定的值
boolean isEmpty():判断集合是否为空
4)获取功能
Set<Map.Entry<K,V>> entrySet():???
V get(Object key):根据键获取值
Set<K> keySet():获取集合中所有键的集合
Collection<V> values():获取集合中所有值的集合
5)长度功能
int size():返回集合中的键值对的对数
例子1:
package mapdemos; import java.util.HashMap; import java.util.Map; /** * Created by gao on 15-12-21. */ public class MapDemo { public static void main(String[] args) { // 创建集合对象 Map<String, String> map = new HashMap<String, String>(); // 添加元素 // V put(K key,V value):添加元素 map.put("A1","B1"); map.put("A2","B2"); map.put("A3","B3"); map.put("A4","B4"); // void clear():移除所有的键值对元素 //map.clear(); // map:{} // V remove(Object key):根据键删除键值对元素,并把值返回 //System.out.println("remove:"+map.remove("A3")); //remove:B3 //System.out.println("remove:"+map.remove("A2")); //remove:B2 // boolean containsKey(Object key):判断集合是否包含指定的键 //System.out.println("containsKey:"+map.containsKey("A2")); //containsKey:true //System.out.println("containsKey:"+map.containsKey("A6")); //containsKey:false // boolean isEmpty():判断集合是否为空 //System.out.println("isEmpty:"+map.isEmpty()); //isEmpty:false //int size():返回集合中的键值对的对数 System.out.println("size:"+map.size()); //size:4 // 输出集合名称 System.out.println("map:" + map);//无序输出 } }
例子2:
package mapdemos; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Set; /** * Created by gao on 15-12-21. */ /* * 获取功能: * V get(Object key):根据键获取值 * Set<K> keySet():获取集合中所有键的集合 * Collection<V> values():获取集合中所有值的集合 */ public class MapDemo02 { public static void main(String[] args) { // 创建集合对象 Map<String, String> map = new HashMap<String, String>(); // 添加元素 // V put(K key,V value):添加元素 map.put("A1", "B1"); map.put("A2", "B2"); map.put("A3", "B3"); map.put("A4", "B4"); // V get(Object key):根据键获取值 System.out.println("get:" + map.get("A3")); //get:B3 System.out.println("get:" + map.get("A6")); //get:null System.out.println("--------------------------"); // Set<K> keySet():获取集合中所有键的集合 Set<String> set = map.keySet(); for (String key : set) { System.out.println(key); } System.out.println("--------------------------"); // Collection<V> values():获取集合中所有值的集合 Collection<String> col = map.values(); for(String value : col){ System.out.println(value); } } }
例子3:Map集合的遍历
方式1:根据键找值
· 获取所有键的集合
· 遍历键的集合,获取到每一个键
· 根据键找值
package mapdemos; /** * Created by gao on 15-12-21. */ import java.util.HashMap; import java.util.Map; import java.util.Set; /** * Map集合的遍历。 * A:获取所有的键 * B:遍历键的集合,获取得到每一个键 * C:根据键去找值 */ public class MapDemo03 { public static void main(String[] args) { // 创建集合对象 Map<String, String> map = new HashMap<String, String>(); // 添加元素 // V put(K key,V value):添加元素 map.put("A1", "B1"); map.put("A2", "B2"); map.put("A3", "B3"); map.put("A4", "B4"); // 遍历 // 获取所有的键 Set<String> set = map.keySet(); // 遍历键的集合,获取得到每一个键 for (String key : set) { // 根据键去找值 String value = map.get(key); System.out.println(key + "---" + value); } } }
输出结果:
A2---B2
A1---B1
A4---B4
A3---B3
例子4:Map集合的遍历
方式2:根据键值对对象找键和值
· 获取所有键值对对象的集合
· 遍历键值对对象的集合,获取到每一个键值对对象
· 根据键值对对象找键和值
package mapdemos; import java.util.HashMap; import java.util.Map; import java.util.Set; /** * Created by gao on 15-12-21. */ /** * Map集合的遍历: * A:获取所有键值对对象的集合 * B:遍历键值对对象的集合,得到每一个键值对对象 * C:根据键值对对象获取键和值 */ public class MapDemo04 { public static void main(String[] args) { // 创建集合对象 Map<String, String> map = new HashMap<String, String>(); // 添加元素 // V put(K key,V value):添加元素 map.put("A1", "B1"); map.put("A2", "B2"); map.put("A3", "B3"); map.put("A4", "B4"); // 获取所有键值对对象的集合 Set<Map.Entry<String, String>> set = map.entrySet(); // 遍历键值对对象的集合,得到每一个键值对对象 for (Map.Entry<String, String> me : set) { // 根据键值对对象获取键和值 String key = me.getKey(); String value = me.getValue(); System.out.println(key + "---" + value); } } }
输出结果:
A2---B2
A1---B1
A4---B4
A3---B3
4、Map集合遍历的两种方式比较图解
![](https://images2015.cnblogs.com/blog/826812/201512/826812-20151221181302999-1338140270.png)