在Map里面每一次可以存放两个对象,所有的对象按照“key = value”的形式保存。也就是说通过key可以找到对应的value。
Collection存放数据的目的是为了输出,而Map存放数据的目的是为了查找。
在java.util中Map接口里面定义的方法如下:
public V put(K key, V value) | 普通 | 向Map集合之中保存数据 |
public V get(Object key) | 普通 | 根据key取得对应的value数据 |
public boolean containsKey(Object key) | 普通 | 判断key是否存在 |
public Set<Map.Entry<K,V>> entrySet() | 普通 | 将Map集合转为Set集合 |
public Set<K> keySet() | 普通 | 取得所有的key |
根据以上的方法实际上就可以得出一结论:在Map集合之中如果要保存数据,那么数据的key一定不可能重复,如果真发生了重复,那么将会出现覆盖的情况。
在使用Map接口的时候比较常用的两个子类:HashMap、Hashtable、TreeMap(根据key排序)。
1 package cn.test; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 public class TestLocal{ 7 public static void main(String[] args) { 8 Map<String,String> map = new HashMap<String,String>(); 9 map.put("李洋", "好孩子"); 10 map.put("张哲", "美女"); 11 map.put("詹秉承", "二货"); 12 map.put(null, "空"); 13 map.put("空", null); 14 map.put(null, null); 15 map.put("庞涵", "单身狗"); 16 System.out.println(map); 17 System.out.println(map.get("李洋")); 18 System.out.println(map.get("李扣")); 19 } 20 }
结果:
{null=null, 李洋=好孩子, 张哲=美女, 詹秉承=二货, 空=null, 庞涵=单身狗}
好孩子
null
总结:只允许存放一个null的key信息,因为会出现覆盖的情况。
在整个过程之中你可以明显的发现,如果存在的key进行查找则返回对应的value,如果不存在的key查找时返回的就是null。
2、Iterator输出Map(核心)
给出Map如何使用Iterator输出的操作步骤:
· 利用Map接口中的entrySet()方法将Map集合变为Set集合;
· Set接口之中提供有iterator()方法,可以利用此方法将Set集合使用Iterator输出;
· 利用Iterator迭代后取出每一个的Map.Entry对象,并且进行key与value的分离。
1 package cn.test; 2 3 import java.util.Iterator; 4 import java.util.Map; 5 import java.util.Set; 6 import java.util.TreeMap; 7 8 public class TestLocal{ 9 public static void main(String[] args) { 10 Map<String,String> map = new TreeMap<String,String>(); 11 map.put("liyang", "好孩子"); 12 map.put("zhangzhe", "美女"); 13 map.put("zhancheng", "二货"); 14 map.put("panghan", "单身狗"); 15 Set<Map.Entry<String,String>> set = map.entrySet(); 16 Iterator<Map.Entry<String,String>> iter = set.iterator(); 17 while(iter.hasNext()){ 18 Map.Entry<String, String> me = iter.next(); 19 System.out.println(me.getKey() + " = " + me.getValue()); 20 } 21 } 22 }
结果:
liyang = 好孩子
panghan = 单身狗
zhancheng = 二货
zhangzhe = 美女
在以后的开发之中,虽然主要的输出模式都是利用Collection完成,但是并不意味着不使用Map输出。