Map集合
1.Map集合的概述和使用
- Map集合概述
- Interface Map<k,V> k:键的类型;v:值的类型
- 将键映射到值的对象:不能包含重复的键,每个键可以映射到最多一个值。(如果存进两个一样的键的元素,后面的相同键的元素会把前面的值给覆盖掉)。
- K允许存储null键的,只能存储一个null键。
2.Map集合的基本功能
方法名 | 说明 |
---|---|
v **put(**K key,V value) | 添加集合 |
v remove(Object key) | 根据键删除键值对元素 |
void clear() | 移除所有键值对元素 |
boolean containsKey(Object key) | 判断集合是否包含指定的键 |
boolean containsValue(Object value) | 判断集合是否包含指定的值 |
boolean isEmpty() | 判断集合是否为空 |
int size() | 集合的长度 |
V get(Object key) | 根据建获取值 |
Set keySet() | 获取所有键的集合 |
Collection values() | 获取所有值的集合 |
Set<Map.Entry<k,v>> entrySet() | 获取所有键值对对象的集合 |
Map方法的应用
package MapDemo01;
import java.util.HashMap;
import java.util.Map;
public class Map_Test {
public static void main(String[] args) {
Map<String,String> map = new HashMap();
//添加方法
map.put("蔡三金","小黑");
map.put("任国强","小花");
map.put("李帅帅","小白");
//添加方法还可以变成修改该方法。因为当键的值一样时后面的会把前面的给覆盖掉
map.put("蔡三金","黑炭");
System.out.println(map);
System.out.println("~~~~~~~~~~");
//删除方法
String name = map.remove("李帅帅");
System.out.println(name);
System.out.println(map);
System.out.println("~~~~~~~~~~~~");
//删除所有的元素
// map.clear();
// System.out.println(map);
//判断该键是否存在,若存在则返true,否则返回false
System.out.println(map.containsKey("蔡三金"));
//判断值是否存在
System.out.println(map.containsValue("黑炭"));
//判断集合是否为空
System.out.println(map.isEmpty());
//判断集合的长度
System.out.println(map.size());
}
}
3.Map集合的获取功能
方法名 | 说明 |
---|---|
V get(Object key) | 根据键值获得对应的值 |
Set keySet | 或的所有的键值存储到Set集合中 |
Collection values() | 获取所有的值 |
Set<Map.Entry<K,V>> entrySet | 获取所有键值对对象的集合 |
案例:
public class MapDemo02 {
public static void main(String[] args) {
// HashSet<String> set = new HashSet<>();
// set.add("");
HashMap<String, String> map = new HashMap<>();
map.put("001", "希");
map.put("002", "泽");
map.put("003", "空儿");
/*
* V get(Object key) : 根据键获取值
* Set<K> keySet() : 获取所有键的集合
* Collection<V> values() : 获取所有值的集合
*/
String value = map.get("003");
System.out.println(value);
// Set<K> keySet(): map集合的第一种遍历方式
// 由 K 找 V
// 获取所有的丈夫(Key),通过丈夫获取(get())对应的妻(Value) 妾
Set<String> set = map.keySet();
for (String key : set) {
String v = map.get(key);
System.out.println(key + "=" + v);
}
System.out.println("~~~~~~~~~~~~~~~~~~");
// Collection<V> values() : 获取所有值的集合
Collection<String> values = map.values();
for (String s : values) {
System.out.println(s);
}
}
}
5. Map遍历方式一之键找值的方式
A:键找值思路:
* 使用keySet方法,获取所有的key,存储到Set集合(召集了所有的丈夫)
* 使用get方法获取Value(根据丈夫(K) 找 妻子(V))
* 使用迭代器或增强for循环进行遍历
- B:案例演示
HashMap<String, String> map = new HashMap<>();
map.put("001", "希");
map.put("002", "泽");
map.put("003", "空儿");
// Set<K> keySet(): map集合的第一种遍历方式
// 由 K 找 V
// 获取所有的丈夫(Key),通过丈夫获取(get())对应的妻(Value) 妾
Set<String> set = map.keySet();
for (String key : set) {
String v = map.get(key);
System.out.println(key + "=" + v);
}
6. Map遍历方式二之Entry的方式
A:根据Map.Entry接口,把Map集合中的键对当成对象存储到Set集合中
B:
- public K getKey() : 获取键
- public V getValue() : 获取值
public class MapDemo03 {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
map.put("001", "希");
map.put("002", "泽");
map.put("003", "空儿");
// map集合的第二种遍历方式
Set<Map.Entry<String, String>> entries = map.entrySet();
// 遍历set集合 获取每一个Entry 结婚证对象
for (Map.Entry<String, String> entry : entries) {
// 通过getKey和getValue 来获取丈夫和妻子
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key +"=" + value);
}
}
}
7. Map集合的案例
/* HashMap集合练习之键是String值是Student
* 案例需求
创建一个HashMap集合,键是学号(String),值是学生对象(Student)。存储三个键值对元素,并遍历
*/
public class MapDemo04 {
public static void main(String[] args) {
// 创建一个HashMap集合,键是学号(String),值是学生对象(Student)
HashMap<String, Student> map = new HashMap<>();
// 创建学生对象
// Student stu1 = new Student("张三",13);
// Student stu2 = new Student("李四",14);
// Student stu3 = new Student("王五",15);
// 将学生对象添加到map集合中
map.put("001", new Student("张三",13));
map.put("002", new Student("李四",14));
map.put("003", new Student("王五",15));
// 使用两种方式遍历map集合
// keySet
Set<String> set = map.keySet();
for (String key : set) {
Student stu = map.get(key);
System.out.println(key + "=" + stu);
}
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
// entrySet
Set<Map.Entry<String, Student>> entries = map.entrySet();
for (Map.Entry<String, Student> entry : entries) {
String key = entry.getKey();
Student value = entry.getValue();
System.out.println(key + "=" + value);
}
}
}