集合(20):Map接口
集合(20):Map接口
Map接口与Collection接口有什么区别?
1、Map接口与Collection接口是平级的关系,不存在继承关系,都是属于util包下面的
2、Map集合中存储的元素都是成对出现的,Map元素的键是唯一的,值是可以重复的
键值对有其他的称呼:夫妻对
3、Collection接口中的元素都是单独出现的,Collection接口下面有个子接口Set元素是唯一的
List集合中的元素是可以重复的,像这样单独出现的元素,有其他的称呼:光棍
1、Map接口的概述
在API中:Interface Map<K,V>
将键映射到值的对象;一个映射不能包含重复的键;每个键最多只能映射到一个值
<K, V> 键值对(K代表键,V代表值)
举例:
1001 李玉伟
1001 李嘉诚(不允许)
1002 李玉伟(允许)
在Map集合中,K值不能重复
2、Map接口的成员方法(Map集合的功能)
(1)添加功能:
V put(K key, V value)//将指定的值与该映射中的指定键相关联
举例:map.put(1001, "朱佳乐");
(2)删除功能:
void clear()//从该map中删除所有的映射(清空映射)
V remove(Object key)//删除一个键的映射
(3)判断功能:
boolean containsKey(Object key)//如果此映射包含指定键的映射,则返回true
boolean containsValue(Object value)//如果此映射将一个或多个键映射到指定的值,则返回true
boolean isEmpty()//如果此map不包含键值映射,则返回 true(注意:是不包含则返回true)
(4)长度功能:
int size()//返回此集合中键值映射的个数
(5)获取功能:
V get(Object key)//输入指定键的映射,获取指定键所映射的值,如果map中不包含该键,返回的是null
Set<K> keySet()//返回此map中包含的键的Set视图(就是获取集合键的映射)
Collection<V> values()//返回此地图中包含的值的Collection视图(获取集合键的映射值)
Set<Map.Entry<K,V>> entrySet()//返回此map中包含的映射的Set视图(获取所有键值对的集合)
(1)添加功能
public class MapDemo1 {
public static void main(String[] args) {
//创建一个Map集合对象,Map属于接口,不能实例化,用它的一个子类创建对象
HashMap<String, String> ssh = new HashMap<>();
//添加元素
//V put(K key, V value)将指定的值与该映射中的指定键相关联
ssh.put("邓超", "孙俪");//邓超是键的映射,孙俪是该映射的值
ssh.put("吴京", "谢楠");
ssh.put("张杰", "谢娜");
ssh.put("小虎", "冯提莫");
System.out.println(ssh);
}
}
执行结果为:
{邓超=孙俪, 吴京=谢楠, 小虎=冯提莫, 张杰=谢娜}
Process finished with exit code 0
//由结果可知,输出结果的顺序和添加的顺序并不是一致的
(2)删除功能①:void clear() //从该map集合中删除所有的映射(清空映射)
public class MapDemo1 {
public static void main(String[] args) {
//创建一个Map集合对象,Map属于接口,不能实例化,用它的一个子类创建对象
HashMap<String, String> ssh = new HashMap<>();
//添加元素
//V put(K key, V value)将指定的值与该映射中的指定键相关联
ssh.put("邓超", "孙俪");
ssh.put("吴京", "谢楠");
ssh.put("张杰", "谢娜");
ssh.put("小虎", "冯提莫");
System.out.println(ssh);
System.out.println("===================================");
//void clear()从该map中删除所有的映射(清空映射)
ssh.clear();
System.out.println(ssh);
}
}
执行结果如下:
{邓超=孙俪, 吴京=谢楠, 小虎=冯提莫, 张杰=谢娜}
===================================
{}
Process finished with exit code 0
删除功能②:V remove(Object key) //从该map集合中删除一个指定的键的映射
public class MapDemo1 {
public static void main(String[] args) {
//创建一个Map集合对象,Map属于接口,不能实例化,用它的一个子类创建对象
HashMap<String, String> ssh = new HashMap<>();
//添加元素
//V put(K key, V value)将指定的值与该映射中的指定键相关联
ssh.put("邓超", "孙俪");
ssh.put("吴京", "谢楠");
ssh.put("张杰", "谢娜");
ssh.put("小虎", "冯提莫");
System.out.println(ssh);
System.out.println("===================================");
//从该map集合中删除一个指定的键的映射
ssh.remove("小虎");
System.out.println(ssh);
}
}
执行结果如下:
{邓超=孙俪, 吴京=谢楠, 小虎=冯提莫, 张杰=谢娜}
===================================
{邓超=孙俪, 吴京=谢楠, 张杰=谢娜}
Process finished with exit code 0
(3)判断功能①:boolean containsKey(Object key) 如果此映射包含指定键的映射,则返回true
public class MapDemo1 {
public static void main(String[] args) {
//创建一个Map集合对象,Map属于接口,不能实例化,用它的一个子类创建对象
HashMap<String, String> ssh = new HashMap<>();
//添加元素
//V put(K key, V value)将指定的值与该映射中的指定键相关联
ssh.put("邓超", "孙俪");
ssh.put("吴京", "谢楠");
ssh.put("张杰", "谢娜");
ssh.put("小虎", "冯提莫");
System.out.println(ssh);
System.out.println("===================================");
//从该map集合中删除一个指定的键的映射
ssh.remove("小虎");
System.out.println(ssh);
System.out.println("===================================");
//boolean containsKey(Object key)如果此映射包含指定键的映射,则返回true 。
System.out.println(ssh.containsKey("邓超"));
System.out.println(ssh.containsKey("小虎"));
}
}
执行结果如下:
{邓超=孙俪, 吴京=谢楠, 小虎=冯提莫, 张杰=谢娜}
===================================
{邓超=孙俪, 吴京=谢楠, 张杰=谢娜}
===================================
true
false
Process finished with exit code 0
判断功能②:boolean containsValue(Object value)如果此映射将一个或多个键映射到指定的值,则返回true
public class MapDemo1 {
public static void main(String[] args) {
//创建一个Map集合对象,Map属于接口,不能实例化,用它的一个子类创建对象
HashMap<String, String> ssh = new HashMap<>();
//添加元素
//V put(K key, V value)将指定的值与该映射中的指定键相关联
ssh.put("邓超", "孙俪");
ssh.put("吴京", "谢楠");
ssh.put("张杰", "谢娜");
ssh.put("小虎", "冯提莫");
System.out.println(ssh);
System.out.println("===================================");
//从该map集合中删除一个指定的键的映射
ssh.remove("小虎");
System.out.println(ssh);
System.out.println("===================================");
//boolean containsKey(Object key)如果此映射包含指定键的映射,则返回true 。
System.out.println(ssh.containsKey("邓超"));
System.out.println(ssh.containsKey("小虎"));
//boolean containsValue(Object value)如果此映射将一个或多个键映射到指定的值,则返回true
System.out.println(ssh.containsValue("孙俪"));
System.out.println(ssh.containsValue("冯提莫"));
}
}
执行结果如下:
{邓超=孙俪, 吴京=谢楠, 小虎=冯提莫, 张杰=谢娜}
===================================
{邓超=孙俪, 吴京=谢楠, 张杰=谢娜}
===================================
true
false
true
false
Process finished with exit code 0
判断功能③:boolean isEmpty() //如果此map不包含键值映射,则返回 true(注意:是不包含则返回true)
public class MapDemo1 {
public static void main(String[] args) {
//创建一个Map集合对象,Map属于接口,不能实例化,用它的一个子类创建对象
HashMap<String, String> ssh = new HashMap<>();
//添加元素
//V put(K key, V value)将指定的值与该映射中的指定键相关联
ssh.put("邓超", "孙俪");
ssh.put("吴京", "谢楠");
ssh.put("张杰", "谢娜");
ssh.put("小虎", "冯提莫");
System.out.println(ssh);
System.out.println("===================================");
//从该map集合中删除一个指定的键的映射
ssh.remove("小虎");
System.out.println(ssh);
System.out.println("===================================");
//boolean containsKey(Object key)如果此映射包含指定键的映射,则返回true 。
System.out.println(ssh.containsKey("邓超"));
System.out.println(ssh.containsKey("小虎"));
//boolean containsValue(Object value)如果此映射将一个或多个键映射到指定的值,则返回true
System.out.println(ssh.containsValue("孙俪"));
System.out.println(ssh.containsValue("冯提莫"));
System.out.println("===================================");
//boolean isEmpty()如果此map不包含键值映射,则返回true
System.out.println(ssh.isEmpty());
}
}
执行结果如下:
{邓超=孙俪, 吴京=谢楠, 小虎=冯提莫, 张杰=谢娜}
===================================
{邓超=孙俪, 吴京=谢楠, 张杰=谢娜}
===================================
true
false
true
false
===================================
false
Process finished with exit code 0
(4)长度功能:int size() //返回此集合中键值映射的个数
public class MapDemo1 {
public static void main(String[] args) {
//创建一个Map集合对象,Map属于接口,不能实例化,用它的一个子类创建对象
HashMap<String, String> ssh = new HashMap<>();
//添加元素
//V put(K key, V value)将指定的值与该映射中的指定键相关联
ssh.put("邓超", "孙俪");//邓超是键,孙俪是值
ssh.put("吴京", "谢楠");
ssh.put("张杰", "谢娜");
ssh.put("小虎", "冯提莫");
System.out.println(ssh);
System.out.println("===================================");
//int size()返回此集合中键值映射的个数
System.out.println("map集合中的键值对个数:" + ssh.size());
}
}
执行结果如下:
{邓超=孙俪, 吴京=谢楠, 小虎=冯提莫, 张杰=谢娜}
===================================
map集合中的键值对个数:3
Process finished with exit code 0
(5)获取功能
V get(Object key)//输入指定键的映射,获取指定键所映射的值,如果map中不包含该键,返回的是null
Set<K> keySet()//返回此map中包含的键的Set视图(就是获取集合键的映射)
Collection<V> values()//返回此地图中包含的值的Collection视图(获取集合键的映射值)
import java.util.Collection;
import java.util.HashMap;
import java.util.Set;
public class MapDemo2 {
public static void main(String[] args) {
//创建map集合对象
HashMap<String, String> ssh = new HashMap<>();
//添加元素
ssh.put("邓超", "孙俪");
ssh.put("吴京", "谢楠");
ssh.put("张杰", "谢娜");
ssh.put("小虎", "冯提莫");
//V get(Object key)
//输入指定键的映射,获取指定键所映射的值,如果map中不包含该键,返回的是null
System.out.println(ssh.get("邓超"));//孙俪
System.out.println("===================================");
//Set<K> keySet()返回此map中包含的键的Set视图(就是获取集合键的映射)
Set<String> strings = ssh.keySet();
for(String s : strings){
System.out.println(s);
}
System.out.println("===================================");
//Collection<V> values()返回此地图中包含的值的Collection视图(获取集合键的映射值)
Collection<String> values = ssh.values();
for (String s : values){
System.out.println(s);
}
}
}
3、遍历Map集合的方式
遍历map集合的方式1:根据键找值
import java.util.HashMap;
import java.util.Set;
/*
1、获取Map集合中所有映射的键的Set集合
2、遍历键的集合,根据键找对应的值
3、输出
*/
public class MapDemo3 {
public static void main(String[] args) {
HashMap<String, String> ssh = new HashMap<>();
//添加元素
ssh.put("洛", "霞");
ssh.put("卢锡安", "塞纳");
ssh.put("蛮王", "艾希");
ssh.put("盖伦", "卡特");
ssh.put("卢锡安", "塞纳");
//获取Map集合中所有映射的键的Set集合
Set<String> keySet = ssh.keySet();
for (String key : keySet) {
String value = ssh.get(key);
System.out.println(key + "---" + value);
}
}
}
执行结果如下:
卢锡安---塞纳
洛---霞
蛮王---艾希
盖伦---卡特
Process finished with exit code 0
遍历map集合的方式2:根据键值对的对象找键和值
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/*
1、获取所有键值对的集合
2、遍历获取每一个键值对,得到每一个键值对对象
3、根据获取到的每一个键值对对象,来进一步获取键和值
*/
public class MapDemo4 {
public static void main(String[] args) {
HashMap<String, String> ssh = new HashMap<>();
//添加元素
ssh.put("洛", "霞");
ssh.put("卢锡安", "塞纳");
ssh.put("蛮王", "艾希");
ssh.put("盖伦", "卡特");
ssh.put("卢锡安", "塞纳");
//获取所有键值对的集合
Set<Map.Entry<String, String>> entries = ssh.entrySet();
for (Map.Entry<String, String> keyValue : entries) {
//HashMap中重写了getKey()和getValue()方法
String key = keyValue.getKey();//获取键的映射
String value = keyValue.getValue();//获取键的映射值
System.out.println(key + "---" + value);
}
}
}
执行结果如下:
卢锡安---塞纳
洛---霞
蛮王---艾希
盖伦---卡特
Process finished with exit code 0


浙公网安备 33010602011771号