欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > Map系列集合

Map系列集合

2024/10/24 12:20:46 来源:https://blog.csdn.net/ADCvbV/article/details/141202469  浏览:    关键词:Map系列集合

一.双列集合的特点:

1.一对一对的添加;

2.元素名称:

3.键和值一一对应

4.一对键和值称为:键值对/键值对对象/Entry

5.总结:


二.Map集合常用的API:

1.Map集合体系:

2.API:

3.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集合的对象Map<String,String> m=new 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集合的对象Map<String,String> m=new 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集合的对象Map<String,String> m=new HashMap<>();
​//2.添加元素/* put方法的细节:put有添加和覆盖两种情况1.在添加数据时,如果键不存在,那么直接把键值对对象添加到map集合当中,方法返回null(因为此时只添加,没覆盖数据,所以返回null)2.在添加数据时,如果键存在,那么会把原有的键值对对象覆盖,会把被覆盖的值进行返回*/String value1=m.put("郭靖","黄蓉");System.out.println(value1);//value1的值为nullm.put("韦小宝","沐剑屏");m.put("尹志平","小龙女");
​String value2 = m.put("韦小宝", "双儿");System.out.println(value2);//value2的值为沐剑屏(沐剑屏为被覆盖的值)
​
​//3.打印集合System.out.println(m);/*运行结果为{韦小宝=双儿, 尹志平=小龙女, 郭靖=黄蓉},覆盖了韦小宝=沐剑屏*/}
}
 
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集合的对象Map<String,String> m=new 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集合的对象Map<String,String> m=new 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集合的对象Map<String,String> m=new HashMap<>();
​//2.添加元素m.put("郭靖","黄蓉");m.put("韦小宝","沐剑屏");m.put("尹志平","小龙女");
​//3.判断是否包含键/值boolean keyResult=m.containsKey("郭靖");System.out.println(keyResult);//运行结果为true,代表存在该键;结果为false代表不存在某个键
​boolean valueResult=m.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集合的对象Map<String,String> m=new 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集合的对象Map<String,String> m=new 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集合是无序的)

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集合的对象Map<String,String> map=new HashMap<>();//2.添加元素map.put("尹志平","小龙女");map.put("郭靖","穆念慈");map.put("欧阳克","黄蓉");//3.通过键找值//3.1:获取所有的键,把这些键放到一个单列集合当中Set<String> keys = map.keySet();//3.2遍历单列集合去得到每一个键(可以用迭代器,增强for,Lambda表达式forEach)for (String key : keys) {System.out.println(key);//3.3利用Map集合中的键获取对应的值String value=map.get(key);System.out.println(key+"="+value);}}
    }

    运行结果:

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集合的对象Map<String,String> map=new HashMap<>();//2.添加元素//键:人物的外号;值:人物的名字map.put("标枪选手","马超");map.put("人物挂件","明世隐");map.put("御龙骑士","尹志平");//3.通过键值对对象进行遍历集合//3.1 通过一个方法(entrySet())获取所有的键值对对象,返回一个Set集合(Set集合里装着所有键值对对象)/* Set<Map.Entry<String, String>> entries = map.entrySet();可以先打出map.entrySet(),再ctrl+alt+v快速生成;Entry为Map接口里的内部接口-->所以要Map.Entry*/Set<Map.Entry<String, String>> entries = map.entrySet();/*Set<Entry<String, String>> entries = map.entrySet();也行,但上方需要一个导包import java.util.Map.Entry;*///3.2 遍历entries这个集合,去得到里面的每一个键值对对象for (Map.Entry<String, String> entry : entries) {//3.3 利用entry调用get方法获取键和值String key = entry.getKey();String value = entry.getValue();System.out.println(key+"="+value);}}
}

运行结果:

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集合的对象Map<String,String> map=new HashMap<>();//2.添加元素//键:人物的名字;值:名人名言map.put("鲁迅","这句话是我说的");map.put("曹操","不可能绝对不可能");map.put("刘备","接着奏乐接着舞");map.put("柯镇恶","看我眼色行事");//3.利用Lambda表达式进行遍历map.forEach(new BiConsumer<String, String>() {@Overridepublic void accept(String key, String value) {System.out.println(key+"="+value);}});}
    }

    改为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集合的对象Map<String,String> map=new HashMap<>();//2.添加元素//键:人物的名字;值:名人名言map.put("鲁迅","这句话是我说的");map.put("曹操","不可能绝对不可能");map.put("刘备","接着奏乐接着舞");map.put("柯镇恶","看我眼色行事");//3.利用Lambda表达式进行遍历map.forEach( (key,value) -> System.out.println(key+"="+value) );}
    }

    运行结果为:


版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com