原文出处: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里面的一个containKey的方法,返回true或者false
Java集合框架中的Map接口表示一种键值对(key-value)的数据结构,其中每个元素都包含一个唯一的键和对应的值。在Map中,每个键必须是唯一的,而值可以重复。Map接口提供了一些方法来实现基本的键值对操作,例如添加...
return map.containsKey(key); } public boolean containsValue(Object value) { // TODO Auto-generated method stub return map.containsValue(value); } public Set entrySet() { // TODO Auto-...
不废话了,直接贴代码了。 代码一: 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
// 一个视频源,可以有多个输出,第二个输出为拷贝源视频输出,不改变视频的各项参数 comm.append(" ").append(" -vcodec copy -f flv -an rtmp://192.168.30.21/live/test2"); System.out.println(comm....
此文件是源代码,亲测有类似于java的Map对象的类似方法:put(key,value)、get(key)、keys()、values()、size()、isEmpty()、remove(key)、clear()、element(index)、containsKey(key)、containsValue(value)。...
* size() 获取MAP元素个数 * isEmpty() 判断MAP是否为空 * clear() 删除MAP所有元素 * put(key, value) 向MAP中增加元素(key, value) * remove(key) 删除指定KEY的元素,成功返回True,失败返回False * ...
(tag.Attributes.ContainsKey("class") && tag.Attributes["class"] == "result-item")) continue; if (!parser.ParseNext("a", out tag)) continue; if (!tag.Attributes.ContainsKey("href")) continue; list....
if (metadataByType.ContainsKey (forType)) return metadataByType[forType]; return null; } //获取元数据,依据该依赖属性 public PropertyMetadata GetMetadata(DependencyObject d) { if ...
if (metadataByType.ContainsKey (forType)) return metadataByType[forType]; return null; } //获取元数据,依据该依赖属性 public PropertyMetadata GetMetadata(DependencyObject d) { if ...
import java.util.Map; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; import org.apache.struts2....
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; ...
仿写的这个Map内包含的方法. containsKey(key) containsValue(value) get(key) put(key, value) remove(key) putAll(map:Map) size() isEmpty() values() keys() toString() 本人刚学AS发现...好像2.0只有Array ...
哈希表的添加关键字和值在遍历输出的时候是任意的没有规律,不按顺序的 Hashtable table = new Hashtable(); table.Add("you", "你"); table.Add("and", "和");... if (table.ContainsKey(str)) {
AugmentedRealityImages.ContainsKey(fileName)) { if (!File.Exists(fileName)) return; AugmentedRealityImages[fileName] = Image.FromFile(fileName); } Image img = AugmentedRealityImages[fileName...
* 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 ...
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 ...
.net C#线程超时的解决方案,使用的时候在被调线程入口调用一下这个方法就可以。更多详细代码见附件 Report.RegisterThread(Report.GetCurrentWin32ThreadID(),Thread.CurrentThread); #region 获取当取线程的...
.net C#线程超时的解决方案,使用的时候在被调线程入口调用一下这个方法就可以。更多详细代码见附件 Report.RegisterThread(Report.GetCurrentWin32ThreadID(),Thread.CurrentThread); #region 获取当取线程的...