当前位置: 首页 > news >正文

Map学习笔记

Map集合

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()	判断集合的长度,也就是集合中键值对的个数
重要!!!

第一个添加元素 put 包含添加以及覆盖,那么什么时候是添加?什么时候是覆盖?

  • 在添加数据的时候,如果键不存在,那么直接把键值对对象添加到 map 结合中,方法返回 null
  • 在添加数据的时候,如果键是存在的,那么会把原有的键值对对象覆盖,把覆盖后的值进行返回
以上常见方法的代码表示
package Map;import java.util.HashMap;
import java.util.Map;public class A01 {//添加元素public static void main1(String[] args) {//1、创建Map集合的对象Map<String,String> m = new HashMap<>();//2、添加元素/*put方法的细节* 添加和覆盖* 在添加数据的时候,如果键不存在,那么直接把键值对对象添加到map结合中,方法返回null* 在添加数据的时候,如果键是存在的,那么会把原有的键值对对象覆盖,把覆盖后的值进行返回*/String value1 = m.put("1", "one");System.out.println(value1);m.put("2","two");m.put("3","three");String value2 = m.put("2", "zhangsan");System.out.println(value2);//3、打印输出System.out.println(m);}//删除操作public static void main2(String[] args) {Map<String,String> m = new HashMap<>();m.put("1", "one");m.put("2", "two");m.put("3", "three");String result = m.remove("2");System.out.println(result);System.out.println(m);}//移除所有的键值对元素public static void main3(String[] args) {Map<String,String> m = new HashMap<>();m.put("1", "one");m.put("2", "two");m.put("3", "three");m.clear();      //调用clean方法System.out.println(m);}//判断是否包含public static void main4(String[] args) {Map<String,String> m = new HashMap<>();m.put("1", "one");m.put("2", "two");m.put("3", "three");boolean keyResult = m.containsKey("1"); //判断System.out.println(keyResult);  //true 表示键存在System.out.println(m);}//判断是否包含指定的值public static void main5(String[] args) {Map<String,String> m = new HashMap<>();m.put("1", "one");m.put("2", "two");m.put("3", "three");boolean valueResult = m.containsValue("four");System.out.println(valueResult);System.out.println(m);}//判断集合是否为空public static void main6(String[] args) {Map<String,String> m = new HashMap<>();m.put("1", "one");m.put("2", "two");m.put("3", "three");boolean empty = m.isEmpty();System.out.println(empty);System.out.println(m);}//获取集合的长度public static void main7(String[] args) {Map<String,String> m = new HashMap<>();m.put("1", "one");m.put("2", "two");m.put("3", "three");int size = m.size();System.out.println(size);System.out.println(m);}
}

Map集合的遍历方式

第一种:键找值

思想:获取到集合的键再通过键来一一找对应的值。

代码表示
package Map;import java.util.HashMap;
import java.util.Map;
import java.util.Set;/*Map集合的第一种遍历方式* 键找值!*/
public class A02 {public static void main(String[] args) {//1、创建Map集合的对象Map<String, String> m = new HashMap<>();//2、添加元素m.put("1", "one");m.put("2", "two");m.put("3", "three");//3、通过键找值//3.1、获取所有的键,把这些键放在一个单列集合当中Set<String> keys = m.keySet();//3.2、遍历所有的键for (String key : keys) {//System.out.println(key);  // 打印输出键//4、根据键获取对应的值String value = m.get(key);  //get方法System.out.println(key + "=" + value);}}
}
第二种:键值对

思想:首先调用 entrySet 方法获取每一个键值对,然后通过 getKey() 获取每一个键,通过 getValue() 获取每一个值。

代码表示
package Map;import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class A03 {public static void main(String[] args) {// 1、创建一个Map集合Map<String, String> map = new HashMap<>();// 2、添加元素,键是数字、值是姓名map.put("1", "张三");map.put("2", "李四");map.put("3", "王五");map.put("4", "赵六");map.put("5", "孙七");// 3、通过遍历获取元素//3.1 调用Map接口的entrySet方法,获取Set集合,包括Map的所有键值对Set<Map.Entry<String, String>> entries = map.entrySet();//3.2 使用增强for循环遍历entries集合,获取每一个键值对对象for (Map.Entry<String, String> entry : entries) {//3.3调用get方法获取键和值String key = entry.getKey();    //获取键keyString value = entry.getValue();    //获取值valueSystem.out.println(key + "=" + value);}}
}
第三种:利用lambda表达式来遍历

思想:调用方法 forEach() 在方法里结合 lambda 表达式来调用。

底层:forEach 其实就是利用第二种方式进行遍历,依次得到每一个键和值,再调用 accept 方法。

代码表示
package Map;import java.util.HashMap;
import java.util.function.BiConsumer;public class A04 {public static void main(String[] args) {HashMap<String, String> m = new HashMap<>();m.put("鲁迅", "这句话是我说的");m.put("曹操", "不可能绝对不可能");m.put("刘备", "接着奏乐接着舞");m.put("小王", "打工仔!");//利用lambda表达式来遍历/*底层* forEach其实就是利用第二种方式进行遍历,依次得到每一个键和值* 再调用accept方法*/m.forEach(new BiConsumer<String, String>() {@Overridepublic void accept(String key, String value) {System.out.println(key + "=" + value);}});System.out.println("-----------------------");m.forEach((String key, String value) -> {System.out.println(key + "=" + value);});System.out.println("-----------------------");m.forEach((key, value) -> System.out.println(key + "=" + value));}
}
http://www.dtcms.com/a/298481.html

相关文章:

  • 扫描对方是否开启局域网远程桌面
  • Windows安装压缩包形式的PostgreSQL
  • Python 列表排序:快速上手指南
  • Palindrome Reorder
  • 腾讯研究院:AI Coding引发编程范式革命
  • 微信小程序动态切换窗口主题色
  • 多智能体强化学习入门:从基础到 IPPO 算法—强化学习(20)
  • 2507C++,C++协程的发送者
  • 浅谈生成式AI语言模型的现状与展望
  • haproxy七层代理(原理)
  • SawtoothSoftware 模板注入漏洞复现(CVE-2025-34300)
  • 8.异常处理:优雅地处理错误
  • ISIS高级特性GR
  • Springboot+activiti启动时报错XMLException: Error reading XML
  • 优思学院|QC七大手法之一的检查表应如何有效使用?
  • 【unitrix】 6.15 “非零非负一“的整数类型(NonZeroNonMinusOne)特质(non_zero_non_minus_one.rs)
  • 亚马逊广告策略:如何平衡大词和长尾词的效果?
  • 倩女幽魂手游代言人杨洋携剑仙入世 仙姿临世锋芒毕露
  • docker-compose:未找到命令的检查步骤和修复
  • ABP VNext + OData:实现可查询的 REST API
  • 服务端处于 TIME_WAIT 状态的 TCP 连接,收到相同四元组的 SYN 后会发生什么?详解
  • HCIP上HCIA复习静态综合实验
  • 移动端设备能部署的llm
  • 系统日志与用户信息绑定实现日志跟踪
  • 前端基础知识Vue系列 - 27(Vue项目中如何解决跨域)
  • 从 SQL Server 到 KingbaseES V9R4C12,一次“无痛”迁移与深度兼容体验实录
  • js基础概念-1
  • 牛客NC16660 [NOIP2004]FBI树(递归 + 二叉树后序遍历)
  • electron中IPC 渲染进程与主进程通信方法解析
  • 常用设计模式系列(十二)—享元模式