Map集合
Map集合
Map集合概述和特点
Map集合概述:
java.util
Interface Map<K,V> K:键的类型 V:值的类型
将键映射到值的对象。 地图不能包含重复的键; 每个键可以映射到最多一个值。
Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含一个键对象和一个值对象。其中,键对象不允许重复,而值对象可以重复,并且值对象还可以是 Map 类型的,就像数组中的元素还可以是数组一样。
创建Map集合的对象
多态的方式
Map 接口主要有两个实现类:HashMap 类和 TreeMap 类。其中,HashMap 类按哈希算法来存取键对象,而 TreeMap 类可以对键对象进行排序。
示例
public class Map01 {
public static void main(String[] args) {
Map<String,String> map = new HashMap<String,String>();
//V put(K key,V value)将指定的值与该映射中的指定键相关联(可选操作)。如果映射先前包含了密钥的映射,则旧值将被指定的值替换。
map.put("001","哦哦");
map.put("002","哈哈");
map.put("003","嘿嘿");
// map.put("003","哦哦");
System.out.println(map);
}
}
若是把被注释003那行添加进去,结果会变成:
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() | 集合的长度,也就是集合中键值对的个数 |
示例
public class Map02 {
public static void main(String[] args) {
Map<String,String> map = new HashMap<>();
// V put (K key,V value):添加元素
map.put("郭靖","黄蓉");
map.put("杨过","小龙女");
map.put("张无忌","赵敏");
// V remove(Object key):根据键删除键值对元素,返回删除的元素
// System.out.println(map.remove("杨过"));//小龙女
// System.out.println(map.remove("Bob"));//null
// void clear():移除所有的键值对元素
// map.clear();//{}
// boolean containsKey(Object key): 判断集合是否包含指定的键
// System.out.println(map.containsKey("杨过"));//true
// System.out.println(map.containsKey("Bob"));//false
// boolean containsValue(Object value):判断集合是否包含指定的值
// System.out.println(map.containsValue("小龙女"));//true
// System.out.println(map.containsValue("Bob"));//false
// boolean isEmpty():判断集合是否为空
// System.out.println(map.isEmpty());//false
// int size():集合的长度,也就是集合中键值对的个数
// System.out.println(map.size());//3
System.out.println(map);
}
}
Map集合的获取功能
方法名 | 说明 |
---|---|
V get(Object key) | 根据键获取值 |
Set |
获取所有键的集合 |
Collection(V) values() | 获取所有值的集合 |
示例
import java.util.*;//表示把这个包下的全部类导入到程序中。
public class map03 {
public static void main(String[] args) {
Map<String,String > map = new HashMap<>();
map.put("郭靖","黄蓉");
map.put("杨过","小龙女");
map.put("张无忌","赵敏");
// V get(Object key):根据键获取值
System.out.println(map.get("杨过"));
System.out.println(map.get("杨幂"));
System.out.println("------------");
// Set<K> keySet():获取所有键的集合
// System.out.println(map.keySet());
Set<String> keySet = map.keySet();
for (String key:keySet) {
System.out.println(key);
}
System.out.println("-----------");
// Collection(V) values():获取所有值的集合
Collection<String> values = map.values();
for (String value :
values) {
System.out.println(value);
}
}
}
运行结果如下
Map集合的遍历
第一种遍历方式
1. 获取所有键的集合,用keySet()方法实现
2. 遍历键的集合,获取到每一个键。用增强for实现
3. 根据键去找值。用get(Object key)方法实现
示例
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Map04 {
public static void main(String[] args) {
Map<String,String> map = new HashMap<>();
map.put("郭靖","黄蓉");
map.put("杨过","小龙女");
map.put("张无忌","赵敏");
Set<String> keySet = map.keySet();//获取所有键的集合
for (String key :
keySet) {
String value = map.get(key);//根据键获取值
System.out.println(key+","+value);
}
}
}
运行结果如下
第二种遍历方式
- 获取所有键值对对象的集合
Set<Map.Entry<K,V>> entrySet():返回此地图中包含的映射的Set视图
也就是获取所有键值对对象的集合 - 遍历键值对对象的集合,得到每一个键值对对象
用增强for循环,得到每一个Map.Entry - 根据键值对对象获取键和值
用getKey()获取键
用getValue()获取值
示例
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
class Map041{
public static void main(String[] args) {
Map<String,String > map = new HashMap<>();
map.put("郭靖","黄蓉");
map.put("杨过","小龙女");
map.put("张无忌","赵敏");
Set<Map.Entry<String, String>> entrySet = map.entrySet();
// Map.Entry<String,String>相当于Set集合中的元素类型
for (Map.Entry<String,String> m:entrySet){
String key = m.getKey();
String value = m.getValue();
System.out.println(key+","+value);
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结