Map集合
一、Map 集合接口
Map<K,V>: K:key,键; V:value,值。
该集合存储键值对,是成对存储的,而且存储要保证键的唯一性。
常用方法:
1、增加:
V put(K key, V value) :当存入相同键的时候,新value值会替换旧值,并返回旧值。
void putAll(Map<? extends K,? extends V> m)
2、删除:
void clear()
V remove(Object key)
3、判断:
boolean containsKey(Object key)
boolean containsValue(Object value)
boolean isEmpty()
4、获取:
V get(Object key) :返回该键上的value值,可以通过返回值来判断一个键是否存在。
int size() :返回长度。
Collection<V> values() :返回一个collection集合,其中存储了map集合中的value值。
Set<Map.Entry<K,V>> entrySet()
Set<K> keySet()
Map集合没有迭代器,所以我们使用其他方法。
1)、Set<k> KeySet(): 将Map集合中所有的键取出存入Set集合中,再使用Set的迭代器遍历Set集合中所有的键,拿到这些键过后,
使用 Map集合的 get()方法,获得它们对应的值。
2)、Set<Map.Entry<K,V>> entrySet(): 将Map集合中的映射关系取出存入到Set集合中,这个映射关系就是Map.Entry类型。
之后使用Set集合的迭代器遍历Set集合,拿到Map.Entry的对象
通过调用这个Map.Entry对象的getKey() 和 getValue()方法来获取Map集合的键 与 值。
Map.Entry<K,V>:Entry也是一个接口,它是Map接口的内部接口。
interface Map<K,V>
{
public static interface Entry<K,V>
{
public abstract K getKey();
public abstract V getValue();
}
}
二、Map的子类对象:
1、Hashtable : 底层是Hash表数据结构,不能传入null键null值,此集合是线程同步的。《效率较低》
2、HashMap : 底层是Hash表数据结构,允许使用null键null值,此集合线程非同步的。(其他与Hashtable基本相同)《效率较高》
3、TreeMap : 底层是二叉树数据结构,线程不同步,可以用作Map集合中的建排序。
Map集合与Set集合较为相似,原因是,Set集合 在底层多是调用的Map集合。