使用HashMap做一个缓存案例【缓存一张图片】
2016-02-27 13:27
405 查看
import java.util.HashMap;
import java.util.Map;
public class HashMapCache {
public static void main(String[] args) {
//通过方法实例化HashMapCache这个类
HashMapCache cache=new HashMapCache();
cache.loadImage("abcd");//内存中没有,先下载
cache.loadImage("abcd");//内存中已经存在,直接获取
cache.loadImage("abcd");//内存中已经存在,直接获取
}
//假设图片下载成功缓存到本地,键值为图片的网址url,value值为真实的图片
Map<String , Picture> map=new HashMap<String,Picture>();
/*使用hashmap缓存图片,从指定的网址url下载图片
* 如果缓存中存在图片则不需要重新下载直接从缓存中获取*/
public Picture loadImage(String url) {
//先判断当前缓存中是否存在对应的图片,若存在此图片则不需要重新下载直接从缓存中获取
if (map.containsKey(url)) {
Picture picture=map.get(url);
//缓存中已有图片,直接使用
System.out.println("缓存中已经存在"+url+"图片,直接从缓存中获取");
return picture;
}else {
//缓存中找不到需要下载的图片,先下载图片再缓存到内存中
//假设picture2是下载的图片
Picture picture2=new Picture(url);
//缓存到内存中
map.put(url,picture2);
System.out.println("缓存中不存在"+url+"图片,先从网络下载,之后再加载到缓存");
return picture2;
}
}
}
//声明一个图片这个类
class Picture{
String name;
//使用构造方法
public Picture (String name) {
super();
this.name=name;
}
}
import java.util.Map;
public class HashMapCache {
public static void main(String[] args) {
//通过方法实例化HashMapCache这个类
HashMapCache cache=new HashMapCache();
cache.loadImage("abcd");//内存中没有,先下载
cache.loadImage("abcd");//内存中已经存在,直接获取
cache.loadImage("abcd");//内存中已经存在,直接获取
}
//假设图片下载成功缓存到本地,键值为图片的网址url,value值为真实的图片
Map<String , Picture> map=new HashMap<String,Picture>();
/*使用hashmap缓存图片,从指定的网址url下载图片
* 如果缓存中存在图片则不需要重新下载直接从缓存中获取*/
public Picture loadImage(String url) {
//先判断当前缓存中是否存在对应的图片,若存在此图片则不需要重新下载直接从缓存中获取
if (map.containsKey(url)) {
Picture picture=map.get(url);
//缓存中已有图片,直接使用
System.out.println("缓存中已经存在"+url+"图片,直接从缓存中获取");
return picture;
}else {
//缓存中找不到需要下载的图片,先下载图片再缓存到内存中
//假设picture2是下载的图片
Picture picture2=new Picture(url);
//缓存到内存中
map.put(url,picture2);
System.out.println("缓存中不存在"+url+"图片,先从网络下载,之后再加载到缓存");
return picture2;
}
}
}
//声明一个图片这个类
class Picture{
String name;
//使用构造方法
public Picture (String name) {
super();
this.name=name;
}
}
相关文章推荐
- [神经网络]2.1-How the backpropagation algorithm works-Warm up: a fast matrix-based approach ...(翻译)
- 7.1 itertools--高效循环的创建函数
- 写一个函数,尽可能高效地从标准URL里取出文件的扩展名(新浪)
- UVA 11040(p342)----Add Bricks in the Wall
- 7.1 itertools--高效循环的创建函数
- 基于 HashMap的三种输出方法
- 链表相交是否有环
- 为什么 Instantiate 克隆出来的GameObject的Scale 在 SetParent 总是放大 64倍?
- u盘装RedHat linux系统图文教程
- spirngMVC+Hibernate+SpringSecuirty+Extjs一个简单的权限管理系统
- Java爬虫~~爬虫伪代码
- 从汇编指令细看计算机程序的运行过程
- 构建微服务-第一章-什么是微服务_002技术多样性
- UVA 10976(p183)----Fractions Again?!
- Android Studio快捷键【Android学习入门】
- iOS中一个UI控件看不见或者点击没有反应的可能原因
- 自己写的一个简单的BP神经网络代码
- HashMap的使用,简单小代码
- hash结构
- gulp改造gulp-rev-append插件实现资源文件链接自动添加MD5版本号