java map 缓存数据_Map方式实现JAVA数据缓存
首先建一个map,该map用来存放所有的数据
protected static Map map = new HashMap<>();
加载所有User,将其放入到User中,map的key为User的id,value为user 加锁是为了保护安全
public void loadAllUser() {if (map.size() == 0) {
synchronized (map) {
try {
List userInfoList = userDAO.findAllUser();
for (User user : userInfoList) {
map.put(user.getId, user);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
如果需要根据id获取User
public User findById(String id){if(map.size() == 0){
loadAllUser();
}
User user = map.get(id);
return user;
}
这里需要先判断map是否为空,为空情况下就需要调用loadAllUser方法将数据存入到Map中
假设需要根据Name获取User 将map遍历一边
public User findByName(String name){if(map.size() == 0){
loadAllUser();
}
User user = new User();
for (Map.Entry entry : map.entrySet()) {
if (entry.getValue().getName.equals(name)) {
user = entry.getValue();
}
}
return user;
}
当然,必不可少的一个方法,clear
public void clearCache() {synchronized (map) {
map.clear();
}
}
*在对数据进行 增 删 改的时候,必须调用这个clear方法,将缓存清空
这样,一个简单的缓存机制就实现了
这仅仅是本人低见
完整代码如下import java.util.HashMap;
import java.util.List;
import java.util.Map;
/* 查找所以数据放入到缓存/public class MapCache {
protected static Map map = new HashMap<>();
public void loadAllUser() {
if (map.size() == 0) {
synchronized (map) {
try {
List userInfoList = userDAO.findAllUser();
for (User user : userInfoList) {
map.put(user.getId, user);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
/** 根据id查找 */
public User findById(String id) {
if (map.size() == 0) {
loadAllUser();
}
User user = map.get(id);
return user;
}
/** 根据name查找 */
public User findByName(String name) {
if (map.size() == 0) {
loadAllUser();
}
User user = new User();
for (Map.Entry entry : map.entrySet()) {
if (entry.getValue().getName.equals(name)) {
user = entry.getValue();
}
}
return user;
}
/** 清除缓存 */
public void clearCache() {
synchronized (map) {
map.clear();
}
}
}
java map 缓存数据_Map方式实现JAVA数据缓存相关推荐
- Java Map中如何使用key获取value数据呢?
转自: Java Map中如何使用key获取value数据呢? 下文笔者讲述使用Map.get()方法获取集合中的value值的方法分享,如下所示: 实现思路:借助Map的get方法即可获取value ...
- java.awt.headless_以编程方式设置java.awt.headless = true
小编典典 我正在使用一个main()类,该类在常量(和其他静态代码)中静态加载JFreeChart的不同部分. 将静态加载块移到类的顶部解决了我的问题. 这不起作用: public class Foo ...
- python数据存储方式_python各数据存储方法
声明: 1)仅作为个人学习,如有冒犯,告知速删! 2)不想误导,如有错误,不吝指教! 本节内容: 简介 ------------------文件存储------------------ TXT文本存储 ...
- java map 线程安全_Map线程安全的四种实现方法
Map 线程安全四种方法: 1.使用 synchronized 关键字,代码如下 synchronized(anObject) { value=map.get(key); } 2.使用 JDK1.5提 ...
- java map循环删除_map循环删除某个元素
下面代码展示了遍历Map时删除元素的正确方式和错误方式. import java.util.HashMap; import java.util.Iterator; import java.util.M ...
- java编程button_以编程方式在Java Swing中单击GUIbutton
即使button.doClick()者对button.doClick()满意,我正在寻找类似于设置助记符(即button.setMnemonic(KeyEvent.VK_A)后发生的事情. 你实际上可 ...
- Java里面遍历list的方式
问题:Java里面遍历list的方式 对于Java语言有点陌生,我尝试熟悉遍历list(或者其他集合)的所有方法(或者是其他正确的语法)和它们每一个方法的优缺点 给定 List的list对象,我知道有 ...
- java map中套map_Java Map – Java中的Map
java map中套map Java Map is part of collections framework. Java Map object is used to store key-value ...
- Windows以服务方式运行Java程序
Windows以服务方式运行Java程序 Windows以服务方式运行Java程序 方式1:通过windows的startup自启动实现 方式2:通过winsw实现windows的服务注册与启动 Wi ...
最新文章
- LVS峰会 | 阿里云李刚:下一代低延时的直播CDN
- cmake 入门学习
- 博士申请 | 香港中文大学(深圳)纪冬旭老师招收博士生/研究助理/博士后
- for,foreach,iterator的用法和区别
- 用过C#的朋友可能认为它是一种十分安全的语言,其实C#也可以做到经典的缓冲区溢出。 本文章将用一个实例来描述C#究竟是如何发生缓冲区溢出的! 首先建立一个C# Console工程,并开启工程的“允许
- 【Pytorch神经网络实战案例】19 神经网络实现估计互信息的功能
- docx文档怎么排列图片_“胶水语言”办公自动化Word篇——使用Python编辑和读取Word文档
- 【转】python 批量修改密码(paramiko)
- Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十五)
- python常用正则表达式
- 零基础学python书籍-图书推荐:《零基础学Python(全彩版)》
- 差速转向机器人数学模型
- libGDX-5:文本显示 BitmapFont 和 工具 hiero
- 5个实用的Excel小技巧,谁用谁说好 !
- 静态资源压缩-nginx缓存问题
- @Value设置默认值
- 推荐系统学习笔记召回策略之基于内容召回
- SAP笔记MM (中文版学习)
- IPhone多视图切换
- upupoo服务器维护中是什么情况,upupoo用不了怎么办-解决upupoo打不开的方法 - 河东软件园...