Map常用的实现类:

  • HashMap:存储数据采用的哈希表结构,元素的存取顺序不能保证一致。通过哈希码对其内部的映射关系进行快速查找,因此对于添加和删除映射关系效率较高,并且允许使用null值和null键,但必须保证键的唯一性。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。 
  • LinkedHashMap:HashMap下有个子类LinkedHashMap,存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的 hashCode()方法、equals()方法。
  • TreeMap:树映射TreeMap中的映射关系存在一定的顺序,可以保证元素的存取顺序一致。由于TreeMap类实现的Map映射中的映射关系是根据键对象按照一定的顺序排序的,因此不允许键对象是null。

Map接口中的常用方法:

  • public V put(K key, V value) :  把指定的键与指定的值添加到Map集合中,其中指定的键必须唯一,否则新添加的值会取代已有的值。
  • public void putAll(Map<? extends K, ? extends V> m):将Map集合中的所有映射关系复制到调用此方法的映射中。
  • public V remove(Object key) : 把指定的键所对应的键值对元素 在Map集合中删除,返回被删除元素的值。
  • public V get(Object key) 根据指定的键,在Map集合中获取对应的值,若指定的键不存在则返回null。
  • public boolean containsKey(Object key):判断Map集合中是否包含指定的键。
  • public boolean containsValue(Object value):判断Map集合中是否包含指定的值。
  • public Set<K> keySet() : 获取Map集合中所有的键,存储到Set集合中。
  • public Collection<V> values():获取Map集合中所有的值,存储到Collection集合。
  • public Set<Map.Entry<K,V>> entrySet() : 获取到Map集合中所有的键值对对象的集合(Set集合)。

用HashMap类型简单例子说明,代码如下:

public class MapDemo {
	public static void main(String[] args) {
		HashMap<Integer, String> map = new HashMap<Integer, String>();
		//添加键和值,返回对应的value值
		map.put(1, "a");
		map.put(2, "b");
		map.put(3, "c");
		map.put(4, "b");
		//删除由键所对应的键值对元素
		map.remove(3); //返回"c"
		//由指定的键来获取对应的值
		map.get(2); //返回"b"
		//判断是否包含键5
		map.containsKey(5); //返回false
		//判断是否包含值"a"
		map.containsValue("a"); //返回true
		//获取map中所有键对象形成的Set集合
		map.keySet(); //返回[1, 2, 4]
		//获取map中所有值对象形成的Collection集合
		map.values(); //返回[a, b, b]
		//获取map中所有的键值对对象的Set集合
		map.entrySet(); //返回[1=a, 2=b, 4=b]
		//将map中的所有映射关系复制到m映射中
		HashMap<Integer, String> m = new HashMap<Integer, String>();
		m.putAll(map);
	}
}