首页 > 代码库 > Map集合

Map集合

在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输出。

Map集合