首先建一个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数据缓存相关推荐

  1. Java Map中如何使用key获取value数据呢?

    转自: Java Map中如何使用key获取value数据呢? 下文笔者讲述使用Map.get()方法获取集合中的value值的方法分享,如下所示: 实现思路:借助Map的get方法即可获取value ...

  2. java.awt.headless_以编程方式设置java.awt.headless = true

    小编典典 我正在使用一个main()类,该类在常量(和其他静态代码)中静态加载JFreeChart的不同部分. 将静态加载块移到类的顶部解决了我的问题. 这不起作用: public class Foo ...

  3. python数据存储方式_python各数据存储方法

    声明: 1)仅作为个人学习,如有冒犯,告知速删! 2)不想误导,如有错误,不吝指教! 本节内容: 简介 ------------------文件存储------------------ TXT文本存储 ...

  4. java map 线程安全_Map线程安全的四种实现方法

    Map 线程安全四种方法: 1.使用 synchronized 关键字,代码如下 synchronized(anObject) { value=map.get(key); } 2.使用 JDK1.5提 ...

  5. java map循环删除_map循环删除某个元素

    下面代码展示了遍历Map时删除元素的正确方式和错误方式. import java.util.HashMap; import java.util.Iterator; import java.util.M ...

  6. java编程button_以编程方式在Java Swing中单击GUIbutton

    即使button.doClick()者对button.doClick()满意,我正在寻找类似于设置助记符(即button.setMnemonic(KeyEvent.VK_A)后发生的事情. 你实际上可 ...

  7. Java里面遍历list的方式

    问题:Java里面遍历list的方式 对于Java语言有点陌生,我尝试熟悉遍历list(或者其他集合)的所有方法(或者是其他正确的语法)和它们每一个方法的优缺点 给定 List的list对象,我知道有 ...

  8. 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 ...

  9. Windows以服务方式运行Java程序

    Windows以服务方式运行Java程序 Windows以服务方式运行Java程序 方式1:通过windows的startup自启动实现 方式2:通过winsw实现windows的服务注册与启动 Wi ...

最新文章

  1. LVS峰会 | 阿里云李刚:下一代低延时的直播CDN
  2. cmake 入门学习
  3. 博士申请 | 香港中文大学(深圳)纪冬旭老师招收博士生/研究助理/博士后
  4. for,foreach,iterator的用法和区别
  5. 用过C#的朋友可能认为它是一种十分安全的语言,其实C#也可以做到经典的缓冲区溢出。 本文章将用一个实例来描述C#究竟是如何发生缓冲区溢出的! 首先建立一个C# Console工程,并开启工程的“允许
  6. 【Pytorch神经网络实战案例】19 神经网络实现估计互信息的功能
  7. docx文档怎么排列图片_“胶水语言”办公自动化Word篇——使用Python编辑和读取Word文档
  8. 【转】python 批量修改密码(paramiko)
  9. Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十五)
  10. python常用正则表达式
  11. 零基础学python书籍-图书推荐:《零基础学Python(全彩版)》
  12. 差速转向机器人数学模型
  13. libGDX-5:文本显示 BitmapFont 和 工具 hiero
  14. 5个实用的Excel小技巧,谁用谁说好 !
  15. 静态资源压缩-nginx缓存问题
  16. @Value设置默认值
  17. 推荐系统学习笔记召回策略之基于内容召回
  18. SAP笔记MM (中文版学习)
  19. IPhone多视图切换
  20. upupoo服务器维护中是什么情况,upupoo用不了怎么办-解决upupoo打不开的方法 - 河东软件园...

热门文章

  1. Linux上安装Hadoop集群(CentOS7+hadoop-2.8.3)
  2. 用httpPost对JSON发送和接收的例子
  3. Appfuse:扩展自己的GenericManager
  4. 趣味思考--苹果剩余最大量
  5. dudu注意:这个可能是bug吧?
  6. package的创建安装和使用
  7. 如何在 Linux 终端中复制粘贴 [初学者教程]
  8. SEAndroid语法介绍
  9. centos7下使用git提交代码
  10. 树莓派之Ubuntu安装远程桌面