Map集合
Map(也称为字典、关联数组)是用于保存具有映射
关系的数据,保存两组值,key
和value
,这两组值可以是任何应用类型的数据。
Map的key不允许重复(底层Map的keySet()返回的是key的Set集合,所以key不会重复
),即Map中对象的任意两个key通过equals()
方法得到的都是false。而,Map的value值是可以重复的(Map的底层values()方法返回类型是Collection,可以存储重复元素
),通过key总能找到唯一的value,Map中的key组成一个Set集合,所以可以通过keySet()
方法返回所有key。Set底层也是通过Map实现的,只不过value都是null的Map来实现的。
Map实现类
Map典型的实现类是HashMap、Hashtable(HashMap子类还有LinkedHashMap)、SortedMap子接口及实现类TreeMap、WeakHashMap、IndentityHashMap等。
Map有一个内部类Entry,该类封装了key-value对,有如下三个方法:
K getKey();
:获取Entry中的key值;V getValue();
:获取Entry中的value值;V setValue(V value);
:设置Entry中的value值,并返回新设置的value值。
public class MapTest {
public static void main(String[] args) {
Map<String,String> map=new HashMap<>();
map.put("2001", "张三");
map.put("2002", "张三");
map.put("2003", "李四");
map.put("2003", "王五");//键重复,会覆盖上一个,留下最新的
System.out.println(map);//{2003=王五, 2002=张三, 2001=张三}
}
}//由上可知,map中的键是不能重复的,而值是可以重复的可以直接通过输出对象来得到
//集合的内容,说明此集合内重写了toString方法。
Map常用方法
int size();
:返回Map的key-value对的长度。boolean isEmpty();
:判断该Map是否为空。boolean containsKey(Object key);
:判断该Map中是否包含指定的key。boolean containsValue(Object value);
:判断该Map是否包含一个或多个value。V get(Object key);
:获取某个key所对应的value;若不包含该key,则返回null。V put(K key, V value);
:向Map添加key-value对,当Map中有一个与该key相等的key-value对,则新的会去覆盖旧的。V remove(Object key);
:移除指定的key所对应的key-value对,若成功删除,则返回移除的value值。void putAll(Map<? extends K, ? extends V> m);
:将指定的Map中的key-value对全部复制到该Map中。void clear();
:清除Map中的所有key-value对。Set<K> keySet();
:获取该Map中所有key组成的Set集合。Collection<V> values();
:获取该Map中所有value组成的Collection。Set<Map.Entry<K, V>> entrySet();
:返回该Map中Entry类的Set集合。boolean remove(Object key, Object value)
:删除指定的key-value对,若删除成功,则返回true;否则,返回false。
特点
1.Map集合的特点
java.util.Map<K,V>接口:集合,是一个双列集合
2.Map集合遍历的第一种方式
Map集合遍历的第一种方式:通过健查找值的方式
Map集合中有一个方法:keySet
Set keySet() 返回此映射中包含的键的 Set 视图。 把Map集合中的健存储到一个Set集合中
3.遍历Map集合的步骤:
1.定义一个Map集合,往集合中添加元素
2.调用Map集合中的方法keySet,把Map集合中的健存储到一个Set集合中
3.遍历Set集合,获取Map集合所有的健
4.通过获取到的健,使用Map集合的方法get查找值