`
sony-soft
  • 浏览: 1008301 次
文章分类
社区版块
存档分类
最新评论

Map.containsKey() 的一个使用场景.

 
阅读更多

原文出处:http://blog.csdn.net/loveyly/article/details/1791577

我们常常使用 Map 对象来缓存数据, 比较常见的处理流程是:

1. 调用 Map 的 get() 方法获取数据;

2. 如果返回不为 null, 直接返回该数据;

3. 如果返回为 null, 则生成数据, 或者从其他地方获取数据, 然后存放入 Map 中, 最后返回该数据.

这里, 我们可以通过使用 Map 的containsKey() 方法来检测是否数据是否存在, 如果key存在, 则表明已经获取过一次数据, 那么直接返回该 key 在 Map 中的值. 不管是否为 null 都直接返回; 如果 key 不存在, 则去生成或者获取数据, 并放入到 Map 中, 并返回该数据.

这里使用 containsKey() 来检测可以应用于: 1. 从其他对方获取的数据可能为空, 并且不会有变化; 2. 获取数据比较耗时. 这个场景下, 使用该方法可以大大降低消耗, 特别是在同步情况下.

分享到:
评论

相关推荐

    Map里面containsKey的用法

    本代码只在简单的实现Map里面的一个containKey的方法,返回true或者false

    Java集合框架Map接口.pdf

    Java集合框架中的Map接口表示一种键值对(key-value)的数据结构,其中每个元素都包含一个唯一的键和对应的值。在Map中,每个键必须是唯一的,而值可以重复。Map接口提供了一些方法来实现基本的键值对操作,例如添加...

    pageDate封装参数,不用实体类

    return map.containsKey(key); } public boolean containsValue(Object value) { // TODO Auto-generated method stub return map.containsValue(value); } public Set entrySet() { // TODO Auto-...

    JavaScript中实现Map的示例代码

    不废话了,直接贴代码了。 代码一: var map=new Map(); map.put("a","A");map.put("b","B");map.put("c","C"); map.get("a");...map.entrySet() // 返回Entity[{key,value},{key,value}] ... * 放入一个键值对 * @par

    ffmpeg-20170620-ae6f6d4-win64

    // 一个视频源,可以有多个输出,第二个输出为拷贝源视频输出,不改变视频的各项参数 comm.append(" ").append(" -vcodec copy -f flv -an rtmp://192.168.30.21/live/test2"); System.out.println(comm....

    js中的类似于java中的map工具对象Map.js

    此文件是源代码,亲测有类似于java的Map对象的类似方法:put(key,value)、get(key)、keys()、values()、size()、isEmpty()、remove(key)、clear()、element(index)、containsKey(key)、containsValue(value)。...

    javascript(map功能)

    * size() 获取MAP元素个数 * isEmpty() 判断MAP是否为空 * clear() 删除MAP所有元素 * put(key, value) 向MAP中增加元素(key, value) * remove(key) 删除指定KEY的元素,成功返回True,失败返回False * ...

    C#的HTML代码解析类

    (tag.Attributes.ContainsKey("class") && tag.Attributes["class"] == "result-item")) continue; if (!parser.ParseNext("a", out tag)) continue; if (!tag.Attributes.ContainsKey("href")) continue; list....

    模仿microsoft实现依赖属性

    if (metadataByType.ContainsKey (forType)) return metadataByType[forType]; return null; } //获取元数据,依据该依赖属性 public PropertyMetadata GetMetadata(DependencyObject d) { if ...

    wpf依赖属性详解

    if (metadataByType.ContainsKey (forType)) return metadataByType[forType]; return null; } //获取元数据,依据该依赖属性 public PropertyMetadata GetMetadata(DependencyObject d) { if ...

    java 同一用户不能同时登陆问题

    import java.util.Map; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; import org.apache.struts2....

    ACCP5.0 S2 项目实战-影院售票系统

    if (this.treeView1.Nodes.ContainsKey(item.Movie.MovieName)) { treenode.Nodes.Add(item.Time); } else { treenode = new TreeNode(item.Movie.MovieName); treenode.Name = item.Movie.MovieName; ...

    AS2.0写的Map

    仿写的这个Map内包含的方法. containsKey(key) containsValue(value) get(key) put(key, value) remove(key) putAll(map:Map) size() isEmpty() values() keys() toString() 本人刚学AS发现...好像2.0只有Array ...

    08:Hashtable的操作.pdf

    哈希表的添加关键字和值在遍历输出的时候是任意的没有规律,不按顺序的 Hashtable table = new Hashtable(); table.Add("you", "你"); table.Add("and", "和");... if (table.ContainsKey(str)) {

    c# 图像识别的轮廓分析 摄像头取图识别

    AugmentedRealityImages.ContainsKey(fileName)) { if (!File.Exists(fileName)) return; AugmentedRealityImages[fileName] = Image.FromFile(fileName); } Image img = AugmentedRealityImages[fileName...

    collection-1.2.1

    * size() 获取MAP元素个数 * isEmpty() 判断MAP是否为空 * clear() 删除MAP所有元素 * put(key, value) 向MAP中增加元素(key, value) * remove(key) 删除指定KEY的元素,成功返回True,失败返回False ...

    一个多线程断点上传文件的功能

    //判断线程是否正在运行并且线程个数小于5 if (!dictionary.ContainsKey(Convert.ToInt32(dr["INDEX_KEY"])) && dictionary.Count < upConfig.RETRY_TIME) { ParameterizedThreadStart threadStart = new ...

    LeetCode判断字符串是否循环-LeeCode-Java:记录Leecode刷题思路与知识点

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 ...

    .net C#线程超时

    .net C#线程超时的解决方案,使用的时候在被调线程入口调用一下这个方法就可以。更多详细代码见附件 Report.RegisterThread(Report.GetCurrentWin32ThreadID(),Thread.CurrentThread); #region 获取当取线程的...

    .net c#线程超时解决方案

    .net C#线程超时的解决方案,使用的时候在被调线程入口调用一下这个方法就可以。更多详细代码见附件 Report.RegisterThread(Report.GetCurrentWin32ThreadID(),Thread.CurrentThread); #region 获取当取线程的...

Global site tag (gtag.js) - Google Analytics