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);
}
}