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

java hashmap在项目中的使用

java hashmap在项目中的使用


1,缓存机制:
在需要频繁访问数据但又不想每次都从数据库或远程服务获取的场景中,可以使用 HashMap 作为缓存。例如,在一个 Web 应用程序中,用户信息可能只需要在登录时从数据库检索一次,之后可以将这些信息存储在 HashMap 中以供快速访问。

Map<String, User> userCache = new HashMap<>();  
// 假设从数据库获取用户信息并缓存  
User user = fetchUserFromDatabase("user123");  
userCache.put("user123", user);  
// 之后可以通过 key 快速访问用户信息  
User cachedUser = userCache.get("user123");


2,购物车:
在电商应用中,HashMap 可以用来实现购物车功能。每个商品都有一个唯一的 ID(如 SKU),可以用作 HashMap 的键,而商品的数量和其他相关信息可以存储在值中。

Map<String, Integer> cart = new HashMap<>();  
// 添加商品到购物车  
cart.put("SKU123", 1);  
cart.put("SKU456", 2);  
// 增加商品数量  
cart.merge("SKU123", 1, Integer::sum);  
// 获取商品数量  
int quantity = cart.getOrDefault("SKU123", 0);


3,统计信息:
在处理大量数据时,HashMap 可以用来存储和跟踪统计信息。例如,统计每个单词在文本中出现的次数。

Map<String, Integer> wordCounts = new HashMap<>();  
// 假设 words 是一个字符串列表,包含文本中的所有单词  
for (String word : words) {  // 单词标准化(例如,转换为小写并去除标点符号)  String normalizedWord = normalizeWord(word);  // 更新或添加单词计数  wordCounts.merge(normalizedWord, 1, Integer::sum);  
}  
// 输出统计结果  
for (Map.Entry<String, Integer> entry : wordCounts.entrySet()) {  System.out.println(entry.getKey() + ": " + entry.getValue());  
}


4,配置管理:

主要是对项目的一些配置信息进行统一管理,如数据库连接,网络域名,微服务地址......

Map<String, String> config = new HashMap<>();  
// 加载配置(这里仅作为示例)  
config.put("db.host", "localhost");  
config.put("db.port", "3306");  
// 访问配置信息  
String dbHost = config.getOrDefault("db.host", "default_host");

5,用户登录状态管理:
在Web应用中,可以使用HashMap来临时存储已登录用户的会话信息。

public class UserSessionManager {private static HashMap<String, User> sessionMap = new HashMap<>();public static void loginUser(String sessionId, User user) {sessionMap.put(sessionId, user);}public static User getUserBySessionId(String sessionId) {return sessionMap.get(sessionId);}public static void logoutUser(String sessionId) {sessionMap.remove(sessionId);}
}


 

相关文章:

  • 【FPGA】Verilog:奇校验位检查器的实现(Odd Parity Bit Checker)
  • 如何在群晖NAS安装WPS Office并使用公网地址远程访问处理文档表格
  • 解决CLion调试时无法显示变量值的问题
  • lspci 显示当前设备的PCI总线信息
  • 分类预测 | Matlab实现ZOA-SVM斑马算法优化支持向量机的多变量输入数据分类预测
  • AWS联网和内容分发之VPC
  • 【linux软件基础知识】进程管理命令的简要概述
  • TXT文本编辑器:一键提取,多关键字匹配,内容尽在掌控!
  • springboot中线程池的使用
  • spring模块(三)Spring AOP(2)使用
  • Django的模型层
  • [图解]产品经理-竞赛题解析:阿布思考法和EA
  • jQuery实现瀑布流
  • css3 笔记01
  • MFC密码对话框之间数据传送实例(源码下载)
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • Fastjson的基本使用方法大全
  • Flannel解读
  • github指令
  • IndexedDB
  • JAVA_NIO系列——Channel和Buffer详解
  • linux安装openssl、swoole等扩展的具体步骤
  • Linux下的乱码问题
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • React-flux杂记
  • session共享问题解决方案
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 利用DataURL技术在网页上显示图片
  • 物联网链路协议
  • 一些css基础学习笔记
  • 用Python写一份独特的元宵节祝福
  • Java总结 - String - 这篇请使劲喷我
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​2021半年盘点,不想你错过的重磅新书
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • #pragma pack(1)
  • #Spring-boot高级
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (vue)页面文件上传获取:action地址
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (力扣)1314.矩阵区域和
  • (强烈推荐)移动端音视频从零到上手(上)
  • (一)python发送HTTP 请求的两种方式(get和post )
  • .gitignore
  • .net dataexcel 脚本公式 函数源码
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .net mvc部分视图
  • .NET MVC第三章、三种传值方式
  • .net web项目 调用webService
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题