Map集合
1.特点:该集合存储键值对。一对一对往里存。而且要保证键的唯一性。
2.常用方法:
1.添加:v put(k key , v value); 将数据以键值对的方式存进集合中。
void putAll(Map<? extends k,? extends v> m) ;从指定映射中将所有映射关系复制到此映射中
2.删除:void clear(); 清空集合
v remove(Object key); 将集合中的元素以键的形式移除。
3.判断:containsKey(Object key) 判断集合中是否有key。如果有,则返回true。
contaninValue(Object value) 判断集合中是否有value
4.查询:get(Object key);
size();
values();
entrySet();
keySet();
Map有三个常见子类:
|---Hashtable:此类实现一个哈希表,该哈希表将映射到相应的值。任何非null对象都可以用作键或值。该集合是线程同步的。 Jdk1.0 效率低
|--HashMap:底层是哈希表数据结构,允许使用null值和null键,该集合是不同步的。 Jdk1.2 效率高
|--TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序。
和Set很像。
其实Set底层就是使用了Map集合。
注:如果添加相同的键,那么后添加的值会覆盖原来键对应值。
map集合的两种取出方式:
1.keySet:将map中所有的键存入到Set集合。因为set具备迭代器。所以可以用迭代的方式取出所有的键,在根据get方法。获取每一个键对应的值。
Map集合的取出原理:将map集合转成set集合。再通过迭代器取出。
2.Set<Map.Entry<k,v>> entrySet:将map集合中德映射关系存入到了set集合中,而这个关系的数据类型就是:map.entry.
Map.Entry 其实Entry也是一个接口,它是Map接口中的一个内部接口。