一.双列集合的特点1.一对一对的添加2.元素名称左为键右为值3.键和值一一对应4.一对键和值称为键值对/键值对对象/Entry对象5.总结二.Map集合常用的API1.Map集合体系2.API3.API举例注Map集合是接口不能实例化只能创建实现类对象--不能new Map而且存的是一对对象键和值--泛型要写两个1)put操作package com.itheima.a01myMap; import java.util.HashMap; import java.util.Map; public class A01_MapDemo1 { public static void main(String[] args) { //1.创建Map集合的对象 MapString,String mnew HashMap(); //2.添加元素 m.put(郭靖,黄蓉); m.put(韦小宝,沐剑屏); m.put(尹志平,小龙女); m.put(韦小宝,双儿); //3.打印集合 System.out.println(m); /*运行结果为{韦小宝双儿, 尹志平小龙女, 郭靖黄蓉}, 覆盖了韦小宝沐剑屏*/ } }package com.itheima.a01myMap; import java.util.HashMap; import java.util.Map; public class A01_MapDemo1 { public static void main(String[] args) { //1.创建Map集合的对象 MapString,String mnew HashMap(); //2.添加元素 /* put方法的细节 put有添加和覆盖两种情况 1.在添加数据时如果键不存在那么直接把键值对对象添加到map集合当中 2.在添加数据时如果键存在那么会把原有的键值对对象覆盖会把被覆盖的值进行返回 */ m.put(郭靖,黄蓉); m.put(韦小宝,沐剑屏); m.put(尹志平,小龙女); String value m.put(韦小宝, 双儿); System.out.println(value);//value的值为沐剑屏沐剑屏为被覆盖的值 //3.打印集合 System.out.println(m); /*运行结果为{韦小宝双儿, 尹志平小龙女, 郭靖黄蓉}, 覆盖了韦小宝沐剑屏*/ } } package com.itheima.a01myMap; import java.util.HashMap; import java.util.Map; public class A01_MapDemo1 { public static void main(String[] args) { //1.创建Map集合的对象 MapString,String mnew HashMap(); //2.添加元素 /* put方法的细节 put有添加和覆盖两种情况 1.在添加数据时如果键不存在那么直接把键值对对象添加到map集合当中方法返回null(因为此时只添加没覆盖数据所以返回null) 2.在添加数据时如果键存在那么会把原有的键值对对象覆盖会把被覆盖的值进行返回 */ String value1m.put(郭靖,黄蓉); System.out.println(value1);//value1的值为null m.put(韦小宝,沐剑屏); m.put(尹志平,小龙女); String value2 m.put(韦小宝, 双儿); System.out.println(value2);//value2的值为沐剑屏沐剑屏为被覆盖的值 //3.打印集合 System.out.println(m); /*运行结果为{韦小宝双儿, 尹志平小龙女, 郭靖黄蓉}, 覆盖了韦小宝沐剑屏*/ } }注put的第一个参数和第二个参数均可以为null。2)删除(remove)操作package com.itheima.a01myMap; import java.util.HashMap; import java.util.Map; public class A01_MapDemo1 { public static void main(String[] args) { //1.创建Map集合的对象 MapString,String mnew HashMap(); //2.添加元素 m.put(郭靖,黄蓉); m.put(韦小宝,沐剑屏); m.put(尹志平,小龙女); //3.删除操作(注是根据键删除键值对元素返回值) String result m.remove(郭靖); System.out.println(result);//运行结果为黄蓉黄蓉为值 //4.打印集合 System.out.println(m);//运行结果为{韦小宝沐剑屏, 尹志平小龙女} } } 3)清空(clear)操作package com.itheima.a01myMap; import java.util.HashMap; import java.util.Map; public class A01_MapDemo1 { public static void main(String[] args) { //1.创建Map集合的对象 MapString,String mnew HashMap(); //2.添加元素 m.put(郭靖,黄蓉); m.put(韦小宝,沐剑屏); m.put(尹志平,小龙女); //3.清空操作 m.clear(); //4.打印集合 System.out.println(m);//运行结果为{} } } 4)判断是否包含键/值package com.itheima.a01myMap; import java.util.HashMap; import java.util.Map; public class A01_MapDemo1 { public static void main(String[] args) { //1.创建Map集合的对象 MapString,String mnew HashMap(); //2.添加元素 m.put(郭靖,黄蓉); m.put(韦小宝,沐剑屏); m.put(尹志平,小龙女); //3.判断是否包含键/值 boolean keyResultm.containsKey(郭靖); System.out.println(keyResult);//运行结果为true,代表存在该键;结果为false代表不存在某个键 boolean valueResultm.containsValue(小龙女); System.out.println(valueResult);//运行结果为true,代表存在该值;结果为false代表不存在某个值 //4.打印集合 System.out.println(m);//运行结果为{韦小宝沐剑屏, 尹志平小龙女, 郭靖黄蓉} } } 5)判断集合是否为空即方法isEmpty:package com.itheima.a01myMap; import java.util.HashMap; import java.util.Map; public class A01_MapDemo1 { public static void main(String[] args) { //1.创建Map集合的对象 MapString,String mnew HashMap(); //2.添加元素 m.put(郭靖,黄蓉); m.put(韦小宝,沐剑屏); m.put(尹志平,小龙女); //3.判断集合是否为空 boolean result m.isEmpty(); System.out.println(result);//运行结果为false,代表集合不为空若运行结果为true,代表集合为空且长度为0 //4.打印集合 System.out.println(m);//运行结果为{韦小宝沐剑屏, 尹志平小龙女, 郭靖黄蓉} } } 6)size方法用来得出集合长度package com.itheima.a01myMap; import java.util.HashMap; import java.util.Map; public class A01_MapDemo1 { public static void main(String[] args) { //1.创建Map集合的对象 MapString,String mnew HashMap(); //2.添加元素 m.put(郭靖,黄蓉); m.put(韦小宝,沐剑屏); m.put(尹志平,小龙女); //3.得出集合长度 int size m.size(); System.out.println(size);//运行结果为3 //4.打印集合 System.out.println(m);//运行结果为{韦小宝沐剑屏, 尹志平小龙女, 郭靖黄蓉} } } 三.Map集合的遍历方式注Map集合是无序的Map集合也可以直接输出打印但直接输出打印就会一次性全部打印不能只打印其中一部分1.键找值先获取键放入单列集合再遍历该单列集合通过get方法依次找到对应的值注获取键要用到方法keySet()获取值要用到方法get()图解代码实现package com.itheima.a01myMap; import java.util.HashMap; import java.util.Map; import java.util.Set; public class A02_MapDemo2 { public static void main(String[] args) { //1.创建Map集合的对象 MapString,String mapnew HashMap(); //2.添加元素 map.put(尹志平,小龙女); map.put(郭靖,穆念慈); map.put(欧阳克,黄蓉); //3.通过键找值 //3.1获取所有的键把这些键放到一个单列集合当中 SetString keys map.keySet(); //3.2遍历单列集合去得到每一个键(可以用迭代器增强forLambda表达式forEach) for (String key : keys) { System.out.println(key); //3.3利用Map集合中的键获取对应的值 String valuemap.get(key); System.out.println(keyvalue); } } }运行结果遍历思路我们刚才存储的元素都是成对出现的所以我们把Map看成是一个夫妻对的集合把所有的丈夫给集中起来遍历丈夫的集合获取到每一个丈夫根据丈夫去找对应的妻子步骤分析获取所有键的集合。用keySet()方法实现遍历键的集合获取到每一个键。用增强for实现根据键去找值。用get(Object key)方法实现2.依次获取键值对对象又叫Entry对象getKey()方法获取键getValue()方法获取值通过一个方法(entrySet())获取所有的键值对对象返回一个Set集合entrySet()方法package com.itheima.a01myMap; import java.util.HashMap; import java.util.Map; import java.util.Set; public class A03_MapDemo3 { public static void main(String[] args) { //1.创建Map集合的对象 MapString,String mapnew HashMap(); //2.添加元素 //键人物的外号值人物的名字 map.put(标枪选手,马超); map.put(人物挂件,明世隐); map.put(御龙骑士,尹志平); //3.通过键值对对象进行遍历集合 //3.1 通过一个方法(entrySet())获取所有的键值对对象返回一个Set集合(Set集合里装着所有键值对对象) /* SetMap.EntryString, String entries map.entrySet();可以 先打出map.entrySet()再ctrlaltv快速生成 Entry为Map接口里的内部接口--所以要Map.Entry */ SetMap.EntryString, String entries map.entrySet(); /*SetEntryString, String entries map.entrySet();也行 但上方需要一个导包import java.util.Map.Entry; */ //3.2 遍历entries这个集合去得到里面的每一个键值对对象 for (Map.EntryString, String entry : entries) { //3.3 利用entry调用get方法获取键和值 String key entry.getKey(); String value entry.getValue(); System.out.println(keyvalue); } } }运行结果遍历思路我们刚才存储的元素都是成对出现的所以我们把Map看成是一个夫妻对的集合获取所有结婚证的集合遍历结婚证的集合得到每一个结婚证根据结婚证获取丈夫和妻子步骤分析获取所有键值对对象的集合SetMap.EntryK,V entrySet()获取所有键值对对象的集合遍历键值对对象的集合得到每一个键值对对象用增强for实现得到每一个Map.Entry根据键值对对象获取键和值用getKey()得到键用getValue()得到值3.Lambda表达式方法forEach方法底层就是利用第二种方式进行遍历依次得到每一个键和值BiConsumer为函数式接口所以可改用Lambda表达式代码实现package com.itheima.a01myMap; import java.util.HashMap; import java.util.Map; import java.util.function.BiConsumer; public class A04_MapDemo4 { public static void main(String[] args) { //1.创建Map集合的对象 MapString,String mapnew HashMap(); //2.添加元素 //键人物的名字值名人名言 map.put(鲁迅,这句话是我说的); map.put(曹操,不可能绝对不可能); map.put(刘备,接着奏乐接着舞); map.put(柯镇恶,看我眼色行事); //3.利用Lambda表达式进行遍历 map.forEach(new BiConsumerString, String() { Override public void accept(String key, String value) { System.out.println(keyvalue); } }); } }改为Lambda表达式package com.itheima.a01myMap; import java.util.HashMap; import java.util.Map; public class A04_MapDemo4 { public static void main(String[] args) { //1.创建Map集合的对象 MapString,String mapnew HashMap(); //2.添加元素 //键人物的名字值名人名言 map.put(鲁迅,这句话是我说的); map.put(曹操,不可能绝对不可能); map.put(刘备,接着奏乐接着舞); map.put(柯镇恶,看我眼色行事); //3.利用Lambda表达式进行遍历 map.forEach( (key,value) - System.out.println(keyvalue) ); } }运行结果为四.Map集合详解五.Map集合常用方法
1.8.Map系列集合
一.双列集合的特点1.一对一对的添加2.元素名称左为键右为值3.键和值一一对应4.一对键和值称为键值对/键值对对象/Entry对象5.总结二.Map集合常用的API1.Map集合体系2.API3.API举例注Map集合是接口不能实例化只能创建实现类对象--不能new Map而且存的是一对对象键和值--泛型要写两个1)put操作package com.itheima.a01myMap; import java.util.HashMap; import java.util.Map; public class A01_MapDemo1 { public static void main(String[] args) { //1.创建Map集合的对象 MapString,String mnew HashMap(); //2.添加元素 m.put(郭靖,黄蓉); m.put(韦小宝,沐剑屏); m.put(尹志平,小龙女); m.put(韦小宝,双儿); //3.打印集合 System.out.println(m); /*运行结果为{韦小宝双儿, 尹志平小龙女, 郭靖黄蓉}, 覆盖了韦小宝沐剑屏*/ } }package com.itheima.a01myMap; import java.util.HashMap; import java.util.Map; public class A01_MapDemo1 { public static void main(String[] args) { //1.创建Map集合的对象 MapString,String mnew HashMap(); //2.添加元素 /* put方法的细节 put有添加和覆盖两种情况 1.在添加数据时如果键不存在那么直接把键值对对象添加到map集合当中 2.在添加数据时如果键存在那么会把原有的键值对对象覆盖会把被覆盖的值进行返回 */ m.put(郭靖,黄蓉); m.put(韦小宝,沐剑屏); m.put(尹志平,小龙女); String value m.put(韦小宝, 双儿); System.out.println(value);//value的值为沐剑屏沐剑屏为被覆盖的值 //3.打印集合 System.out.println(m); /*运行结果为{韦小宝双儿, 尹志平小龙女, 郭靖黄蓉}, 覆盖了韦小宝沐剑屏*/ } } package com.itheima.a01myMap; import java.util.HashMap; import java.util.Map; public class A01_MapDemo1 { public static void main(String[] args) { //1.创建Map集合的对象 MapString,String mnew HashMap(); //2.添加元素 /* put方法的细节 put有添加和覆盖两种情况 1.在添加数据时如果键不存在那么直接把键值对对象添加到map集合当中方法返回null(因为此时只添加没覆盖数据所以返回null) 2.在添加数据时如果键存在那么会把原有的键值对对象覆盖会把被覆盖的值进行返回 */ String value1m.put(郭靖,黄蓉); System.out.println(value1);//value1的值为null m.put(韦小宝,沐剑屏); m.put(尹志平,小龙女); String value2 m.put(韦小宝, 双儿); System.out.println(value2);//value2的值为沐剑屏沐剑屏为被覆盖的值 //3.打印集合 System.out.println(m); /*运行结果为{韦小宝双儿, 尹志平小龙女, 郭靖黄蓉}, 覆盖了韦小宝沐剑屏*/ } }注put的第一个参数和第二个参数均可以为null。2)删除(remove)操作package com.itheima.a01myMap; import java.util.HashMap; import java.util.Map; public class A01_MapDemo1 { public static void main(String[] args) { //1.创建Map集合的对象 MapString,String mnew HashMap(); //2.添加元素 m.put(郭靖,黄蓉); m.put(韦小宝,沐剑屏); m.put(尹志平,小龙女); //3.删除操作(注是根据键删除键值对元素返回值) String result m.remove(郭靖); System.out.println(result);//运行结果为黄蓉黄蓉为值 //4.打印集合 System.out.println(m);//运行结果为{韦小宝沐剑屏, 尹志平小龙女} } } 3)清空(clear)操作package com.itheima.a01myMap; import java.util.HashMap; import java.util.Map; public class A01_MapDemo1 { public static void main(String[] args) { //1.创建Map集合的对象 MapString,String mnew HashMap(); //2.添加元素 m.put(郭靖,黄蓉); m.put(韦小宝,沐剑屏); m.put(尹志平,小龙女); //3.清空操作 m.clear(); //4.打印集合 System.out.println(m);//运行结果为{} } } 4)判断是否包含键/值package com.itheima.a01myMap; import java.util.HashMap; import java.util.Map; public class A01_MapDemo1 { public static void main(String[] args) { //1.创建Map集合的对象 MapString,String mnew HashMap(); //2.添加元素 m.put(郭靖,黄蓉); m.put(韦小宝,沐剑屏); m.put(尹志平,小龙女); //3.判断是否包含键/值 boolean keyResultm.containsKey(郭靖); System.out.println(keyResult);//运行结果为true,代表存在该键;结果为false代表不存在某个键 boolean valueResultm.containsValue(小龙女); System.out.println(valueResult);//运行结果为true,代表存在该值;结果为false代表不存在某个值 //4.打印集合 System.out.println(m);//运行结果为{韦小宝沐剑屏, 尹志平小龙女, 郭靖黄蓉} } } 5)判断集合是否为空即方法isEmpty:package com.itheima.a01myMap; import java.util.HashMap; import java.util.Map; public class A01_MapDemo1 { public static void main(String[] args) { //1.创建Map集合的对象 MapString,String mnew HashMap(); //2.添加元素 m.put(郭靖,黄蓉); m.put(韦小宝,沐剑屏); m.put(尹志平,小龙女); //3.判断集合是否为空 boolean result m.isEmpty(); System.out.println(result);//运行结果为false,代表集合不为空若运行结果为true,代表集合为空且长度为0 //4.打印集合 System.out.println(m);//运行结果为{韦小宝沐剑屏, 尹志平小龙女, 郭靖黄蓉} } } 6)size方法用来得出集合长度package com.itheima.a01myMap; import java.util.HashMap; import java.util.Map; public class A01_MapDemo1 { public static void main(String[] args) { //1.创建Map集合的对象 MapString,String mnew HashMap(); //2.添加元素 m.put(郭靖,黄蓉); m.put(韦小宝,沐剑屏); m.put(尹志平,小龙女); //3.得出集合长度 int size m.size(); System.out.println(size);//运行结果为3 //4.打印集合 System.out.println(m);//运行结果为{韦小宝沐剑屏, 尹志平小龙女, 郭靖黄蓉} } } 三.Map集合的遍历方式注Map集合是无序的Map集合也可以直接输出打印但直接输出打印就会一次性全部打印不能只打印其中一部分1.键找值先获取键放入单列集合再遍历该单列集合通过get方法依次找到对应的值注获取键要用到方法keySet()获取值要用到方法get()图解代码实现package com.itheima.a01myMap; import java.util.HashMap; import java.util.Map; import java.util.Set; public class A02_MapDemo2 { public static void main(String[] args) { //1.创建Map集合的对象 MapString,String mapnew HashMap(); //2.添加元素 map.put(尹志平,小龙女); map.put(郭靖,穆念慈); map.put(欧阳克,黄蓉); //3.通过键找值 //3.1获取所有的键把这些键放到一个单列集合当中 SetString keys map.keySet(); //3.2遍历单列集合去得到每一个键(可以用迭代器增强forLambda表达式forEach) for (String key : keys) { System.out.println(key); //3.3利用Map集合中的键获取对应的值 String valuemap.get(key); System.out.println(keyvalue); } } }运行结果遍历思路我们刚才存储的元素都是成对出现的所以我们把Map看成是一个夫妻对的集合把所有的丈夫给集中起来遍历丈夫的集合获取到每一个丈夫根据丈夫去找对应的妻子步骤分析获取所有键的集合。用keySet()方法实现遍历键的集合获取到每一个键。用增强for实现根据键去找值。用get(Object key)方法实现2.依次获取键值对对象又叫Entry对象getKey()方法获取键getValue()方法获取值通过一个方法(entrySet())获取所有的键值对对象返回一个Set集合entrySet()方法package com.itheima.a01myMap; import java.util.HashMap; import java.util.Map; import java.util.Set; public class A03_MapDemo3 { public static void main(String[] args) { //1.创建Map集合的对象 MapString,String mapnew HashMap(); //2.添加元素 //键人物的外号值人物的名字 map.put(标枪选手,马超); map.put(人物挂件,明世隐); map.put(御龙骑士,尹志平); //3.通过键值对对象进行遍历集合 //3.1 通过一个方法(entrySet())获取所有的键值对对象返回一个Set集合(Set集合里装着所有键值对对象) /* SetMap.EntryString, String entries map.entrySet();可以 先打出map.entrySet()再ctrlaltv快速生成 Entry为Map接口里的内部接口--所以要Map.Entry */ SetMap.EntryString, String entries map.entrySet(); /*SetEntryString, String entries map.entrySet();也行 但上方需要一个导包import java.util.Map.Entry; */ //3.2 遍历entries这个集合去得到里面的每一个键值对对象 for (Map.EntryString, String entry : entries) { //3.3 利用entry调用get方法获取键和值 String key entry.getKey(); String value entry.getValue(); System.out.println(keyvalue); } } }运行结果遍历思路我们刚才存储的元素都是成对出现的所以我们把Map看成是一个夫妻对的集合获取所有结婚证的集合遍历结婚证的集合得到每一个结婚证根据结婚证获取丈夫和妻子步骤分析获取所有键值对对象的集合SetMap.EntryK,V entrySet()获取所有键值对对象的集合遍历键值对对象的集合得到每一个键值对对象用增强for实现得到每一个Map.Entry根据键值对对象获取键和值用getKey()得到键用getValue()得到值3.Lambda表达式方法forEach方法底层就是利用第二种方式进行遍历依次得到每一个键和值BiConsumer为函数式接口所以可改用Lambda表达式代码实现package com.itheima.a01myMap; import java.util.HashMap; import java.util.Map; import java.util.function.BiConsumer; public class A04_MapDemo4 { public static void main(String[] args) { //1.创建Map集合的对象 MapString,String mapnew HashMap(); //2.添加元素 //键人物的名字值名人名言 map.put(鲁迅,这句话是我说的); map.put(曹操,不可能绝对不可能); map.put(刘备,接着奏乐接着舞); map.put(柯镇恶,看我眼色行事); //3.利用Lambda表达式进行遍历 map.forEach(new BiConsumerString, String() { Override public void accept(String key, String value) { System.out.println(keyvalue); } }); } }改为Lambda表达式package com.itheima.a01myMap; import java.util.HashMap; import java.util.Map; public class A04_MapDemo4 { public static void main(String[] args) { //1.创建Map集合的对象 MapString,String mapnew HashMap(); //2.添加元素 //键人物的名字值名人名言 map.put(鲁迅,这句话是我说的); map.put(曹操,不可能绝对不可能); map.put(刘备,接着奏乐接着舞); map.put(柯镇恶,看我眼色行事); //3.利用Lambda表达式进行遍历 map.forEach( (key,value) - System.out.println(keyvalue) ); } }运行结果为四.Map集合详解五.Map集合常用方法