Java 本地 Map 类:带自动过期删除元素功能,可自定义过期时间
```java import java.util.HashMap; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; public class ExpiringMap<K, V> { private Map<K, V> map = new ConcurrentHashMap<>(); private Map<K, Long> expirationTimes = new ConcurrentHashMap<>(); private ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(1); public ExpiringMap() { // 启动定时任务,定期检查并删除过期元素 executorService.scheduleAtFixedRate(() -> { long currentTime = System.currentTimeMillis(); for (Map.Entry<K, Long> entry : expirationTimes.entrySet()) { if (entry.getValue() < currentTime) { map.remove(entry.getKey()); expirationTimes.remove(entry.getKey()); } } }, 0, 1, TimeUnit.SECONDS); } public void put(K key, V value, long expirationMillis) { map.put(key, value); expirationTimes.put(key, System.currentTimeMillis() + expirationMillis); } public V get(K key) { if (map.containsKey(key)) { return map.get(key); } return null; } public static void main(String[] args) { ExpiringMap<String, String> expiringMap = new ExpiringMap<>(); expiringMap.put("key1", "value1", 5000); // 5 秒后过期 try { Thread.sleep(6000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(expiringMap.get("key1")); // 应为 null } } ``` 注意: 1. 实际使用中需根据需求调整定时检查的频率和过期时间的精度。 2. 多线程环境下要注意线程安全问题。 3. 对于大量元素的情况,可能需要优化存储和删除的性能。 ######[AI写代码神器 | 470点数解答 | 2025-01-17 08:59:55]
- Python 实现简易密码设置系统:多种功能交互与安全要点揭秘(字节豆包 | 286点数解答 | 2025-03-28 10:43:21)385
- C语言实现多功能密码设置系统:含代码及安全注意要点(字节豆包 | 414点数解答 | 2025-03-28 10:43:55)368
- C 语言实现:超简单密码设置系统,含代码与注意要点!(字节豆包 | 519点数解答 | 2025-03-28 12:42:02)407
- C语言实现密码管理系统:含功能代码与安全注意事项(字节豆包 | 409点数解答 | 2025-04-05 18:09:56)353
- C语言实现多功能密码系统:初始化、确认、设置、显示、重置与退出(字节豆包 | 454点数解答 | 2025-04-05 18:48:42)355
- C语言实现密码管理系统:含初始化、确认、设置、显示、重置及退出功能(字节豆包 | 413点数解答 | 2025-04-06 15:37:16)300
- C 语言实现密码管理系统:含初始化、确认、设置、显示、重置及退出功能(字节豆包 | 403点数解答 | 2025-04-06 15:37:54)313
- Java 实现复制粘贴功能:打造简易文本复制粘贴程序(GPT | 1497点数解答 | 2024-08-25 09:40:33)429
- 基于商品效期规则的本地网页管理系统,无需服务器和网络,单HTML文件本地浏览器运行。 商品效期规则: 保质期≥12个月:临期提醒提前45天,下架提前5天(含过期提醒) 6个月≤保质期<12个月:临期提醒提前20天,下架提前3天(含过期提醒) 3个月≤保质期<6个月:临期提醒提前15天,下架提前3天(含过期提醒) 30天≤保质期<3个月:临期提醒提前10天,下架提前3天(含过期提醒) 15天≤保质期<30天:临期提醒提前5天,下架提前3天(含过期提醒) 保质期≤15天:临期提醒提前3天,下架提前2天(含过期提醒) 一定要遵守上门这个规则,状态以上位置,需要一一对应。 严格遵循 6 级保质期规则 → 自动计算「临期/下架/过期」状态(绿/黄/红) 产品管理模块: 商品列表展示:序号、名称、类别、生产日期、保质期、到期日、剩余天数(带单位)、状态(正常/临期/下架(一定要注意,选择类型要根据选择显示),对应绿/黄/红颜色)、操作(编辑、删除、备注),默认按照后添加先排,还需要根据一些条件,比如剩余天数可以筛选排序。 功能:添加商品(弹窗形式,保质期仅支持"XX天"或"XX月"格式)(讯飞星火 | 2053点数解答 | 2026-04-01 23:04:48)28
- 解决数据库“dm.jdbc.driver.dmexception: 数据溢出”问题的全步骤指南(阿里通义 | 598点数解答 | 2024-10-15 15:48:38)330
- 达梦数据库数据溢出问题排查及多维度解决方法(阿里通义 | 403点数解答 | 2024-10-15 15:48:41)1220
- Java顺序表源码深度解析:从内存布局到扩容机制与Windows实战指南(阿里通义 | 2528点数解答 | 2026-04-01 10:06:46)24