Map(和Collection接口同级的接口)集合
1.简述:该集合用于存储键值对,一对一对的往里存,但要保证键的唯一性
2.Map接口的子类对象
|--HashTable:底层是哈希表数据结构,不可以存入null键和null值,线程同步,效率低
|--HashMap:底层是哈希表数据结构,可以存入null键和null值,线程不同步,效率高
|--TreeMap:底层是二叉树数据结构,线程不同步,可以对Map集合中的元素进行排序
和set接口的集合很像,事实上set集合底层就是用了Map集合
3.共性方法
(1)增加
put(Key key,Value value)
putAll(Map<? extends k,? extends v>m)
(2)删除
clear()
remove(Object key)
(3)判断
containsValue(Object value)
containsKey(Object key)
(4)获取
get(Object key)
size()
values()
重要方法
Set<key> keySet():
将Map中的所有键存入到set集合中,因为set具备迭代器
所有通过迭代器方式取出的键,都可通过get()方法来获取对应的值
Set<Map.Entry<K,V>> entrySet():
将Map集合中的所有映射关系存入到set集合中,而这个关系的数据类型就是:Map.Entry
public class MapDemo {
public static void main(String[] args) {
Map<String, String> map=new HashMap<String, String>();
//添加元素时,如果添加的key相同,则key对应的后面的value值会覆盖前面的旧值,并且,put()方法
//会返回原来的旧值,和新添加的新值
/* System.out.println( map.put("01","张三旧值"));
System.out.println( map.put("01","张三新值"));*/
map.put("01","张三");
map.put("02","李四");
map.put("03","王五"); //System.out.println(map);
//将map集合中的映射关系取出,存入到Set集合中
Set<Map.Entry<String, String>> mapEntries=map.entrySet();
Iterator<Map.Entry<String, String>> iterator=mapEntries.iterator();
while(iterator.hasNext())
{
Map.Entry<String, String> meEntry=iterator.next();//获取Set集合中的映射关系
String key=meEntry.getKey();//获取映射关系中的key值
String value=meEntry.getValue();//获取映射关系中的value值
System.out.println(key+" : "+value);
}
// Map.Entry其实也是一个接口,是Map接口中的内部接口
/* //keySet()方法,获取所有的key集合,并存入到set集合中
Set<String> set=map.keySet();
Iterator<String> iterator=set.iterator();
while(iterator.hasNext())
{
String key=iterator.next();
System.out.println("key:"+key+" value: "+map.get(key));
}*/
/* 是否包含指定的键
System.out.println(map.containsKey("02"));
是否包含指定的值
System.out.println(map.containsValue("张三"));
通过key获取value。可以通过get来判断值是否存在
System.out.println(map.get("03"));
获取集合的长度
System.out.println(map.size());
获取集合的所有值
System.out.println(map.values());
通过key删除元素 注意:删除后返回删除成功后的值
System.out.println("remove:"+map.remove("03"));//返回王五
清除集合中的所有元素
map.clear();
System.out.println(map.values());
map.putAll(map2);
System.out.println(map.values());
}
}