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

输出指定日期区间内的所有天、周、月

部分方法需要依赖hutool工具包。

<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>4.5.10</version>
</dependency>`

需求:输出2023-04-17到2023-05-23期间所有的天、周、月。

:2023-04-17、2023-04-18、…2023-05-23
:202317(第17周)、202318(第18周)…
周的范围(周日作为每周第一天):2023-04-17至2023-04-23、2023-04-24至2023-04-30…
周的范围(周一作为每周第一天):2023-04-23至2023-04-29、2023-04-30至2023-05-06…
:2023-04、2023-05


输入输出yyyy-MM-dd格式

String startDateString = "2023-04-23";
String endDateString = "2023-05-07";

输出这两个日期之间所有的日期

输入输出yyyy-MM-dd格式

public static List<String> getDatesBetween(String startDateString, String endDateString) {List<DateTime> datesBetween = DateUtil.rangeToList(DateUtil.parseDate(startDateString), DateUtil.parseDate(endDateString), DateField.DAY_OF_MONTH);return datesBetween.stream().map(p -> DateUtil.format(p, DatePattern.NORM_DATE_PATTERN)).collect(Collectors.toList());
}

测试:

System.out.println("getDatesBetween:"+ JSON.toJSONString(getDatesBetween(startDateString,endDateString)));

输出:

getDatesBetween:["2023-04-23","2023-04-24","2023-04-25","2023-04-26","2023-04-27","2023-04-28","2023-04-29","2023-04-30","2023-05-01","2023-05-02","2023-05-03","2023-05-04","2023-05-05","2023-05-06","2023-05-07"]

输出这两个日期之间所有的周(数字)

比如:[“202318”,“202319”] 表示2023年第18、19周

public static List<String> getWeeksBetween(String startDateString, String endDateString) {// 这种情况必须重置结束日期,结束日期最好改成这周的最后一天,不然会丢失最后不足一周的数据endDateString = DateUtil.format(DateUtil.endOfWeek(DateUtil.parse(endDateString)), DatePattern.NORM_DATE_PATTERN);List<DateTime> datesBetween = DateUtil.rangeToList(DateUtil.parseDate(startDateString), DateUtil.parseDate(endDateString), DateField.WEEK_OF_YEAR);return datesBetween.stream().map(p -> String.format("%d%02d", DateUtil.year(p), DateUtil.weekOfYear(p))).collect(Collectors.toList());
}

我在测试的时候发现,如果结束日期不是这周的最后一天,它可能会少一周数据,所以直接重置结束日期。

测试:

System.out.println("getMonthsBetween:"+ JSON.toJSONString(getMonthsBetween(startDateString,endDateString)));

输出:

getWeeksBetween:["202317","202318","202319"]

输出这两个日期之间所有的周(周一为每周的第一天)

比如:[“2023-04-24至2023-04-30”,“2023-05-01至2023-05-07”]

public static List<String> getWeeksMonBetween(String startDateString, String endDateString) {return getWeeksBetween(startDateString, endDateString,  Calendar.MONDAY);
}private static List<String> getWeeksBetween(String startDateString, String endDateString ,int firstDay) {Date startDate = DateUtil.parse(startDateString);Date endDate = DateUtil.parse(endDateString);List<String> weekStartDates = new ArrayList<>();Calendar calendar = Calendar.getInstance();calendar.setTime(startDate);while (calendar.getTime().compareTo(endDate) <= 0) {// 获取当前日期所在周的起始日期int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);int diff = (dayOfWeek - firstDay + 7) % 7;calendar.add(Calendar.DAY_OF_YEAR, -diff);String weekStart = DateUtil.format(calendar.getTime(), DatePattern.NORM_DATE_PATTERN);// 获取当前日期所在周的结束日期calendar.add(Calendar.DAY_OF_YEAR, 6);String weekEnd = DateUtil.format(calendar.getTime(), DatePattern.NORM_DATE_PATTERN);weekStartDates.add(weekStart + "至" + weekEnd);// 将日期移动到下一周的起始日期calendar.add(Calendar.DAY_OF_YEAR, 1);}return weekStartDates;
}

测试:

System.out.println("getWeeksMonBetween:"+ JSON.toJSONString(getWeeksMonBetween(startDateString,endDateString)));

输出:

getWeeksMonBetween:["2023-04-17至2023-04-23","2023-04-24至2023-04-30","2023-05-01至2023-05-07"]

输出这两个日期之间所有的周(周日为一周的第一天)

比如:[“2023-04-24至2023-04-30”,“2023-05-01至2023-05-07”]

public static List<String> getWeeksSunBetween(String startDateString, String endDateString) {return getWeeksBetween(startDateString, endDateString,  Calendar.SUNDAY);
}

还是调用上边的方法,只是参数换成Calendar.SUNDAY

测试:

System.out.println("getWeeksSunBetween:"+ JSON.toJSONString(getWeeksSunBetween(startDateString,endDateString)));

输出:

getWeeksSunBetween:["2023-04-23至2023-04-29","2023-04-30至2023-05-06","2023-05-07至2023-05-13"]

输出这两个日期之间所有的月

比如:[“2023-04”,“2023-05”]

public static List<String> getMonthsBetween(String startDateString, String endDateString) {// 这种情况必须重置结束日期,结束日期最好改成这月的最后一天endDateString = DateUtil.format(DateUtil.endOfMonth(DateUtil.parse(endDateString)), DatePattern.NORM_DATE_PATTERN);List<DateTime> datesBetween = DateUtil.rangeToList(DateUtil.parseDate(startDateString), DateUtil.parseDate(endDateString), DateField.MONTH);return datesBetween.stream().map(p -> DateUtil.format(p, "yyyy-MM")).collect(Collectors.toList());
}

测试:

System.out.println("getMonthsBetween:"+ JSON.toJSONString(getMonthsBetween(startDateString,endDateString)));

输出:

getMonthsBetween:["2023-04","2023-05"]

输出这两个日期之间所有的周(周一为每周的第一天)方案B

private static List<String> getWeeksMonBetweenPlanB(String startDateString, String endDateString) {// 这种情况必须重置结束日期,结束日期最好改成这周的最后一天endDateString = DateUtil.format(DateUtil.endOfWeek(DateUtil.parse(endDateString)), DatePattern.NORM_DATE_PATTERN);List<DateTime> datesBetween = DateUtil.rangeToList(DateUtil.parseDate(startDateString), DateUtil.parseDate(endDateString), DateField.WEEK_OF_YEAR);return datesBetween.stream().map(p -> {String startOfWeek = DateUtil.format(DateUtil.beginOfWeek(p), DatePattern.NORM_DATE_PATTERN);String endOfWeek = DateUtil.format(DateUtil.endOfWeek(p), DatePattern.NORM_DATE_PATTERN);return startOfWeek + "至" + endOfWeek;}).collect(Collectors.toList());
}

测试:

System.out.println("getWeeksMonBetweenPlanB:"+ JSON.toJSONString(getWeeksMonBetweenPlanB(startDateString,endDateString)));

输出:

getWeeksMonBetweenPlanB:["2023-04-17至2023-04-23","2023-04-24至2023-04-30","2023-05-01至2023-05-07"]

完整工具类

package com.test.util;import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;/*** @Description: 日期范围工具* @title: DateRangeUtil* @Date: 2023/5/23 16:06* @Version 1.0*/
public class DateRangeUtil {/*** 输出这两个日期之间所有的日期 yyyy-MM-dd格式* @param startDateString* @param endDateString* @return*/public static List<String> getDatesBetween(String startDateString, String endDateString) {List<DateTime> datesBetween = DateUtil.rangeToList(DateUtil.parseDate(startDateString), DateUtil.parseDate(endDateString), DateField.DAY_OF_MONTH);return datesBetween.stream().map(p -> DateUtil.format(p, DatePattern.NORM_DATE_PATTERN)).collect(Collectors.toList());}/*** 输出这两个日期之间所有的周(数字) 比如:["202318","202319"] 表示2023年第18、19周* @param startDateString* @param endDateString* @return*/public static List<String> getWeeksBetween(String startDateString, String endDateString) {// 这种情况必须重置结束日期,结束日期最好改成这周的最后一天,不然会丢失最后不足一周的数据endDateString = DateUtil.format(DateUtil.endOfWeek(DateUtil.parse(endDateString)), DatePattern.NORM_DATE_PATTERN);List<DateTime> datesBetween = DateUtil.rangeToList(DateUtil.parseDate(startDateString), DateUtil.parseDate(endDateString), DateField.WEEK_OF_YEAR);return datesBetween.stream().map(p -> String.format("%d%02d", DateUtil.year(p), DateUtil.weekOfYear(p))).collect(Collectors.toList());}/*** 输出这两个日期之间所有的周(周一为一周的第一天) 比如:["2023-04-24至2023-04-30","2023-05-01至2023-05-07"]* @param startDateString* @param endDateString* @return*/public static List<String> getWeeksMonBetween(String startDateString, String endDateString) {return getWeeksBetween(startDateString, endDateString,  Calendar.MONDAY);}/*** 输出这两个日期之间所有的周(周日为一周的第一天) 比如:["2023-04-24至2023-04-30","2023-05-01至2023-05-07"]* @param startDateString* @param endDateString* @return*/public static List<String> getWeeksSunBetween(String startDateString, String endDateString) {return getWeeksBetween(startDateString, endDateString,  Calendar.SUNDAY);}private static List<String> getWeeksBetween(String startDateString, String endDateString ,int firstDay) {Date startDate = DateUtil.parse(startDateString);Date endDate = DateUtil.parse(endDateString);List<String> weekStartDates = new ArrayList<>();Calendar calendar = Calendar.getInstance();calendar.setTime(startDate);while (calendar.getTime().compareTo(endDate) <= 0) {// 获取当前日期所在周的起始日期int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);int diff = (dayOfWeek - firstDay + 7) % 7;calendar.add(Calendar.DAY_OF_YEAR, -diff);String weekStart = DateUtil.format(calendar.getTime(), DatePattern.NORM_DATE_PATTERN);// 获取当前日期所在周的结束日期calendar.add(Calendar.DAY_OF_YEAR, 6);String weekEnd = DateUtil.format(calendar.getTime(), DatePattern.NORM_DATE_PATTERN);weekStartDates.add(weekStart + "至" + weekEnd);// 将日期移动到下一周的起始日期calendar.add(Calendar.DAY_OF_YEAR, 1);}return weekStartDates;}/*** 输出这两个日期之间所有的月 比如:["2023-04","2023-05"]* @param startDateString* @param endDateString* @return*/public static List<String> getMonthsBetween(String startDateString, String endDateString) {// 这种情况必须重置结束日期,结束日期最好改成这月的最后一天endDateString = DateUtil.format(DateUtil.endOfMonth(DateUtil.parse(endDateString)), DatePattern.NORM_DATE_PATTERN);List<DateTime> datesBetween = DateUtil.rangeToList(DateUtil.parseDate(startDateString), DateUtil.parseDate(endDateString), DateField.MONTH);return datesBetween.stream().map(p -> DateUtil.format(p, "yyyy-MM")).collect(Collectors.toList());}// B方案 未使用private static List<String> getWeeksMonBetweenPlanB(String startDateString, String endDateString) {// 这种情况必须重置结束日期,结束日期最好改成这周的最后一天endDateString = DateUtil.format(DateUtil.endOfWeek(DateUtil.parse(endDateString)), DatePattern.NORM_DATE_PATTERN);List<DateTime> datesBetween = DateUtil.rangeToList(DateUtil.parseDate(startDateString), DateUtil.parseDate(endDateString), DateField.WEEK_OF_YEAR);return datesBetween.stream().map(p -> {String startOfWeek = DateUtil.format(DateUtil.beginOfWeek(p), DatePattern.NORM_DATE_PATTERN);String endOfWeek = DateUtil.format(DateUtil.endOfWeek(p), DatePattern.NORM_DATE_PATTERN);return startOfWeek + "至" + endOfWeek;}).collect(Collectors.toList());}public static void main(String[] args) {String startDateString = "2023-04-23";String endDateString = "2023-05-07";System.out.println("getDatesBetween:"+ JSON.toJSONString(getDatesBetween(startDateString,endDateString)));System.out.println("getWeeksMonBetween:"+ JSON.toJSONString(getWeeksMonBetween(startDateString,endDateString)));System.out.println("getWeeksSunBetween:"+ JSON.toJSONString(getWeeksSunBetween(startDateString,endDateString)));System.out.println("getWeeksBetween:"+ JSON.toJSONString(getWeeksBetween(startDateString,endDateString)));System.out.println("getMonthsBetween:"+ JSON.toJSONString(getMonthsBetween(startDateString,endDateString)));System.out.println("getWeeksMonBetweenPlanB:"+ JSON.toJSONString(getWeeksMonBetweenPlanB(startDateString,endDateString)));}}

相关文章:

输出指定日期区间内的所有天、周、月

部分方法需要依赖hutool工具包。 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>4.5.10</version> </dependency>需求&#xff1a;输出2023-04-17到2023-05-23期间所有的天、周、月。…...

【线性规划模型】

线性规划模型&#xff1a;原理介绍和预测应用 引言 线性规划是运筹学中一种重要的数学优化方法&#xff0c;被广泛应用于各个领域&#xff0c;包括工业、经济、物流等。 线性规划模型的原理 线性规划模型的目标是在一组线性约束条件下&#xff0c;寻找一组变量的最优解&…...

android 12.0卸载otg设备开机不加载otg设备

1.概述 在12.0定制化开发过程中,客户有功能需求,通过系统属性值控制是否加载挂载otg设备,当设置为卸载模式时,要求不能挂载otg设备,开机也不能挂载otg设备 2.卸载otg设备开机不加载otg设备的核心代码 frameworks/base/services/core/java/com/android/server/StorageMan…...

通过 Wacom 的 Project Mercury 提高远程办公效率

过去几年中&#xff0c;我们的工作方式发生了翻天覆地的变化。疫情加快了对远程办公和协作的采纳&#xff0c;导致人们更加依赖技术来联系团队和提高工作效率。 但是&#xff0c;那些依靠专门硬件和软件来完成工作的创作者呢&#xff1f;艺术家、设计师和开发人员需要使用专门…...

Linux-0.11 文件系统namei.c详解

Linux-0.11 文件系统namei.c详解 模块简介 namei.c是整个linux-0.11版本的内核中最长的函数&#xff0c;总长度为700行。其核心是namei函数&#xff0c;即根据文件路径寻找对应的i节点。 除此以外&#xff0c;该模块还包含一些创建目录&#xff0c;删除目录&#xff0c;创建目…...

计算机网络学习笔记

<!-- GFM-TOC --> 计算机网络体系结构 传输层&#xff1a;TCP和UDP 什么是三次握手&#xff1f; 什么是四次挥手&#xff1f; TCP如何实现流量控制&#xff1f; TCP的拥塞控制是怎么实现的&#xff1f; TCP如何最大利用带宽&#xff1f; TCP与UDP的区别 TCP如何保…...

Pod相关操作命令

Pod相关操作命令 Pod setup # CocoaPods 将信息下载到~/.cocoapods/repos 目录下。如果安装 CocoaPods 时不执行此命令&#xff0c;在初次执行pod intall 命令时&#xff0c;系统也会自动执行该指令 pod --version # 检查 CocoaPods 是否安装成功及其版本号 pod repo update #…...

图灵完备游戏:信号计数 解法记录

使用1个全加器 2个半加器完成。这关的思想主旨在于如何把输出4&#xff0c;输出2&#xff0c;输出1的情况统一在一根导线上。 首先用一个全加器来完成输入2-4这三个引脚的计数&#xff0c;因为全加器输出范围二进制是00 - 11&#xff0c;而输入正好有两个引脚数位是2和1&…...

数据结构图的基础概念

1、图的概念 图(Graph)&#xff1a;是由顶点的有穷非空集合和顶点之间边的集合组成。顶点(Vertex)&#xff1a;图中的数据元素。边(Edge)&#xff1a;顶点之间的逻辑关系,边可以是有向的或无向的&#xff0c;也可以带有权重&#xff08;可以表示距离&#xff0c;花费等&#xf…...

一场九年前的“出发”:奠基多模态,逐鹿大模型

原创&#xff1a;谭婧 全球AI大模型的技术路线&#xff0c;没有多少秘密&#xff0c;就那几条路线&#xff0c;一只手都数得过来。 而举世闻名的GPT-4浑身上下都是秘密。 这两件事并不矛盾。为什么呢&#xff1f; 这就好比&#xff0c;回答“如何制造一台光刻机&#xff1f;”。…...

什么是url跳转漏洞?

什么是url跳转漏洞 简介原因&#xff1a;如何防止 简介 URL跳转漏洞是一种Web应用程序安全问题&#xff0c;指的是在应用程序处理URL跳转时&#xff0c;由于程序员的疏忽或设计不当&#xff0c;攻击者可能通过构造恶意URL来实现对应用程序的攻击。 原因&#xff1a; 跳转条件…...

生物学经典blast比对算法,R语言和Python如何实现?

Blast比对算法原理与实现方式 做生物的同学肯定听说过blast比对这个方法&#xff0c;一般在NCBI等网站上可以在线进行比对&#xff0c;也可以在本地服务器进行比对&#xff0c;那么blast算法究竟是怎么实现对不同序列的比对呢&#xff1f; 本文分享经典blast算法的基础原理&…...

Android 开机动画支持mp4格式视频播放

前 言 Android系统在启动的过程中&#xff0c;最多可以出现三个画面&#xff0c;每一个画面都用来描述一个不同的启动阶段。无论是哪一个画面&#xff0c;它们都是在一个称为帧缓冲区&#xff08;frame buffer&#xff0c;简称fb&#xff09;的硬件设备上进行渲染的。 自定义…...

软考A计划-试题模拟含答案解析-卷十

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…...

Kafka入门(安装和SpringBoot整合)

文章目录 一、Docker安装Kafka1. 创建网络2. 安装zookeeper3. 安装Kafka 二、Kafka介绍1. Kafka简介 三、SpringBoot整合Kafka1. 引入pom依赖2. application.propertise配置3. Hello Kafka(Producer)4. Consumer Kafka5. 带回调的生产者6. 自定义分区器7. kafka事务提交8. 指定…...

gitLab相关命令

gitLab相关命令 1) 远程仓库相关命令 git clone 远程仓库地址 #检出仓库git remote -v #查看远程仓库git remote add [name][url] #添加远程仓库&#xff0c;git remote add origin 远程仓库地址git remote rm [name] #删除远程仓库&#xff0c;git remote rm origingit remo…...

一些查看日志时的常用命令

文章目录 1、grep -r 搜索内容 *2、l * 关键字 *3、tail -f 文件名4、tail -n X 文件名5、cat 文件名 | grep "关键字" -C X同理可得&#xff0c;-A同理可得&#xff0c;-B 一些查看日志时的常用命令 1、grep -r 搜索内容 * 作用&#xff1a;在一堆文件里&#xff0…...

Javascript 的执行环境(execution context)和作用域(scope)及垃圾回收

执行环境有全局执行环境和函数执行环境之分&#xff0c;每次进入一个新执行环境&#xff0c;都会创建一个搜索变量和函数的作用域链。函数的局部环境不仅有权访问函数作用于中的变量&#xff0c;而且可以访问其外部环境&#xff0c;直到全局环境。全局执行环境只能访问全局执行…...

CRDT协同算法

CRDT的英文全称是Conflict-free Replicated Data Type&#xff0c;最初是由协同文本编辑和移动计算而发展的&#xff0c;现在还被用作在线聊天系统、音频分发平台等等。当前CRDT算法在富文本编辑器领域的协同依旧是典型的场景&#xff0c;常用于作为实现文档协同的底层算法&…...

近代中国的三次思想文化运动

1、戊戌变法中维新派顽固派论战 第一次思想解放潮流是1898年维新派与顽固势力的论战。论战的内容有&#xff1a;要不要变法&#xff0c;要不要兴民权、实行君主立宪&#xff0c;要不要提倡西学、改变教育制度。此次论争是资本主义思想同封建主义思想的正面交锋&#xff0c;此后…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...