基本概念
java.util.Map<K,V>集合中存取元素的基本单位是:单对元素,类型参如下:K- 维护的键(Key)的类型,相当于目录V- 映射值(Value)的类型,相当于内容- 该集合中key是不允许重复的,而且一个key只能对应一个value
- Map集合的主要实现类有:
HashMap类、TreeMap类、LinkedHashMap类、Hashtable类、Properties类HashMap类的底层是采用哈希表进行数据管理的。TreeMap类的底层是采用红黑树进行数据管理的。LinkedHashMap与HashMap的不同之处在于内部维护了一个双向链表,链表中记录了元素的迭代顺序,也就是元素插入集合中的先后顺序,因此便于迭代。Hashtable类是古老的Map实现类,与HashMap类相比属于线程安全的类,且不允许null作为key或者value的数值。Properties类是Hashtable类的子类,处理属性文件,key和value都是String类型
Map集合是面向查询优化的数据结构, 在大数据量情况下有着优良的查询性能。
经常用于根据key检索value的业务场景。
常用的方法
| 方法声明 | 功能介绍 |
|---|---|
V put(K key, V value) |
将Key-Value对存入Map, 若集合中已经包含该Key, 则替换该Key所对应的Value, 返回值为该Key原来所对应的Value, 若没有则返回null |
V get(Object key) |
返回与参数Key所对应的Value对象,如果不存在则返回null |
boolean containsKey(Object key) |
判断集合中是否包含指定的Key |
boolean containsValue(Object value) |
判断集合中是否包含指定的Value |
V remove(Object key) |
根据参数指定的key进行删除 |
Set keySet() |
返回此映射中包含的键的Set视图 |
Collection values() |
返回此映射中包含的值的Collection视图 |
Set<Map.Entry<K,V>> entrySet() |
返回此映射中包含的映射的Set视图 |

声明
public class MapDemo {public static void main(String[] args) {//1.声明Map集合//泛型,左边不可以省略类型,右边<>可以省略Map<String, String> m1 = new HashMap<>();System.out.println("m1:" + m1);//{}}}

put()返回放入的key对应位置是否有元素,如果有则返回value,如果没有则返回null,然后添加进去。
添加
put()
import java.util.HashMap;import java.util.Map;public class MapDemo {public static void main(String[] args) {//1.声明Map集合//泛型,左边不可以省略类型,右边<>可以省略Map<String, String> m1 = new HashMap<>();System.out.println("m1:" + m1);//{}String put = m1.put("1", "hello");System.out.println("原来的value值:"+ put);//nullSystem.out.println("m1:" + m1);//{1=hello}put = m1.put("2", "map");System.out.println("原来的value值:"+ put);//nullSystem.out.println("m1:" + m1);//{1=hello, 2=map}put = m1.put("three", "hashMap");System.out.println("原来的value值:"+ put);//nullSystem.out.println("m1:" + m1);//{1=hello, 2=map, three=hashMap}}}
修改
put()
- 根据key去查找对应是否存在,因为map集合里面的key是唯一的,也可以说Map集合的key是一个Set集合
//实现修改put = m1.put("three", "Good");System.out.println("原来的value值:"+ put);//hashMapSystem.out.println("m1:" + m1);//{1=hello, 2=map, three=Good}

集合判断
containsKey():查找key是否存在containsValue():集合查找value是否存在
//集合 查找keyboolean b1 = m1.containsKey("1");System.out.println("查找key为1的结果:" + b1); // trueb1 = m1.containsKey("11");System.out.println("查找key为11的结果:" + b1); // false//集合查找valueb1 = m1.containsValue("hashMap");System.out.println("查找value为hashMap的结果:" + b1); // falseb1 = m1.containsValue("map");System.out.println("查找value为map的结果:" + b1); // true
获取元素
- 根据前面的key查找的结果为true来进行获取,也可以直接获取
//集合根据key获取valueString str = m1.get("5");System.out.println("str2 = " + str); // nullstr = m1.get("3");System.out.println("str2 = " + str); // map
删除元素
//集合中元素的删除操作str = m1.remove("1");System.out.println("被删除的value是:" + str); // helloSystem.out.println("m1 = " + m1); // {2=map, 3=map, three=Good}
获取集合的所有key
- Set集合不允许有重复元素,所以返回的key的集合是一个Set集合
//获取集合的所有key 组成Set视图 并不是新的set集合Set<String> keySet = m1.keySet();// 遍历所有的keyfor (String key : keySet) {//根据key获取valueString value = m1.get(key);System.out.println(key + "=" + value);}
2=map3=mapthree=Good
获取集合的所有value
- Collection集合可以有重复元素
//获取集合的所有value 组成Collection视图 并不是新的Collection集合
Collection<String> values = m1.values();
//遍历所有的value
for (String va:values) {
System.out.println("value:" + va);
}
value:map
value:map
value:Good
获取集合每个键值对
//获取Map集合中所有的键值对并组成Set视图
Set<Map.Entry<String, String>> entries = m1.entrySet();
for (Map.Entry<String, String> en:entries) {
System.out.println(en);
}
2=map
3=map
three=Good
