集合之Map
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | package com.Lucky.Map; import java.util.HashMap; import java.util.Map; /* map接口: 无法new ,只能new他的实现类 */ public class MapDemo { public static void main(String[] args) { // put(k key,v,value) :添加元素 // remove(Object key) :移除元素 //void clear() :清除集合元素 //boolean containsKey(Object key) :判断该键是否包含在该集合里面 //boolean containsValue(Object Value) :判断该值是否包含在该集合里面 //boolean isEmpty() :判断集合是否为空 //int size() :判断集合大小 //创建Map集合 Map<String,String> map= new HashMap<>(); System.out.println( "-------- put(K Key,V Value): 添加/覆盖----------------" ); /* put: 添加/覆盖 1.如果添加数据时,键不存在,就直接将数据添加到键值对对象里面,返回null 2.如果添加数据时,键已经存在,就将原有的键值对对象覆盖,返回被覆盖的值。 */ System.out.println(map.put( "文艺人士" , "人生无常" )); map.put( "唯易人生" , "YYDS" ); map.put( "不凭明天" , "只凭朝夕" ); map.put( "测试代码" , "BUG" ); System.out.println(map.put( "文艺人士" , "XXS" )); //对原有的键值对对象进行覆盖操作 System.out.println(map); System.out.println( "-------- remove(K Key):移除元素----------------" ); System.out.println(map.remove( "文艺人士" )); //返回移除的键值对的值 System.out.println(map.remove( "不凭明天" , "BUGCS" )); //键值对没有找到就返回false System.out.println( "-------- containsKey(K Key):判断键值对是否包含在集合中----------------" ); System.out.println(map.containsKey( "不凭明天" )); System.out.println(map.containsValue( "xxs" )); System.out.println( "-------- isEmpty():判断集合是否为空----------------" ); System.out.println(map.isEmpty()); System.out.println(map.size()); map.clear(); System.out.println(map); } } |
遍历Map集合的方法:
①keySet
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | package com.Lucky.Map; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; /* 遍历获取Map集合的键值对 1.通过键找值的方法:关键点:keySet(); */ public class MapDemo1 { public static void main(String[] args) { Map<String,String> map= new HashMap<>(); map.put( "唯易人生" , "YYDS" ); map.put( "不凭明天" , "只凭朝夕" ); map.put( "测试代码" , "BUG" ); //生成Set集合获取Map集合的所有键 final Set<String> strings = map.keySet(); //1.利用增强for循环得到每一个键 System.out.println( "--------利用增强for循环得到每一个键----------" ); for (String str : strings) { //str是键值对的键 //再利用键找到所有的值 String res=map.get(str); System.out.println(str+ ":" +res); } //2.利用增强迭代器得到每一个键 System.out.println( "--------利用增强迭代器得到每一个键-----------" ); Iterator<String> ite = strings.iterator(); while (ite.hasNext()){ //再利用键找到所有的值 String key=ite.next(); String val=map.get(key); System.out.println(key+ ":" +val); } //利用lamda表达式 System.out.println( "--------利用lamda表达式-----------" ); strings.forEach(str-> System.out.println(str+ ":" +map.get(str))); } } |
②entrySet
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | package com.Lucky.Map; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; /* 获取键值对的第二种方法: entrySet();或取整个键值对对象 */ public class MapDemo2 { public static void main(String[] args) { Map<String,String> map= new HashMap<>(); map.put( "BUG" , "时刻存在" ); map.put( "爱情BUG" , "NB" ); map.put( "人生无常" , "大肠包小肠" ); //每天一个小知识:alt+enter == ctrl+alt+v Set<Map.Entry<String, String>> entries = map.entrySet(); //遍历获取 entries.forEach(str-> System.out.println(str.getKey()+ ":" +str.getValue())); for (Map.Entry<String, String> entry : entries) { System.out.println(entry.getKey()+ ":" +entry.getValue()); } System.out.println( "*********************" ); Iterator<Map.Entry<String, String>> iterator = entries.iterator(); while (iterator.hasNext()){ System.out.println(iterator.next()); } } } |
③forEach
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | package com.Lucky.Map; import java.util.HashMap; import java.util.Map; import java.util.function.BiConsumer; /* 获取键值对的第三种方法: 直接forEach */ public class MapDemo3 { public static void main(String[] args) { Map<String,String> map= new HashMap<>(); map.put( "QWERT" , "DFGHJK" ); map.put( "挨打杂货福" , "万能" ); map.forEach( new BiConsumer<String, String>() { @Override public void accept(String k, String v) { System.out.println(k+ ":" +v); } }); //简化版 map.forEach((String k, String v)->{ System.out.println(k+ ":" +v); } ); //最简版 map.forEach((k,v)-> System.out.println(k+ ":" +v)); } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律