在上一篇使用 google Collection的MapMaker
的时候,提到了一个demo。
接下来做了一个修改,记录下其中的现象。
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.TimeUnit;
import com.google.common.base.Function;
import com.google.common.collect.MapMaker;
/**
* @author guoliang created GoogleColTestMain.java
* @since 2010-4-28 下午05:48:55
*/
public class GoogleColTestMain {
/**
* @param args
*/
public static void main(String[] args) {
/**
* softKeys
* weakValues
* 可以设置key跟value的strong,soft,weak属性。不错不错。
* expiration(3, TimeUnit.SECONDS)设置超时时间为3秒
*
*/
ConcurrentMap<Integer, String> testMap = new MapMaker().concurrencyLevel(32).softKeys().weakValues().expiration(
3, TimeUnit.SECONDS).makeComputingMap(new Function<Integer, String>() {
/**
* 这里就是绑定的根据key没找到value的时候触发的function,
* 可以将这里的返回值放到对应的key的value中!
* @param arg0
* @return
*/
@Override
public String apply(Integer arg0) {
return "create:" + arg0;
}
});
testMap.put(new Integer(1), "hello 1 value");
System.out.println(testMap.get(new Integer(1)));
}
}
这里可以看到输入的结果是:
create:1
说明map里面没有找到这个key。究其原因查了下mapMaker的api,中间有这样一段话:
softKeys
public MapMaker softKeys()
Specifies that each key (not value) stored in the map should be wrapped in a SoftReference (by default, strong references are used).
Note: the map will use identity (==) comparison to determine equality of soft keys, which may not behave as you expect. For example, storing a key in the map and then attempting a lookup using a different but equals-equivalent key will always fail.
Throws:
IllegalStateException - if the key strength was already set
See Also:
SoftReference
对于softKeys在map查找的时候,比较用的是“==”,而不是equals方法,从而导致了刚才找不到的情况!
把softKeys去掉,使用默认的strongKeys就可以找到了。
搞完这个事情,接下来,就对soft,weak进行了一下了解,以前只是有看到过这些,但是没怎么理解,最近学习了下。
参见下篇:weak,soft,phtom Reference,软,弱,虚引用!
分享到:
相关推荐
本文将详细介绍如何使用MapMaker 3.0进行基因定位,通过实例演示以F2定位群体为例,介绍其在基因定位中的应用流程。 #### 数据整理 在使用MapMaker 3.0之前,首先需要对实验数据进行整理。以下步骤展示了如何将...
《Mapmaker 3.0中文使用说明书》详细阐述了这款广泛应用在遗传图谱构建和QTL定位领域的软件的功能、数据组织方式以及基本操作流程。Mapmaker 3.0是一款专为个人计算机(PC)设计的强大工具,它在生物信息学研究中...
《Mapmaker EXP V4.01:遗传育种作图软件的进阶解析》 Mapmaker EXP是一款在遗传育种领域广泛应用的专业软件,...对于从事遗传育种研究的科研工作者而言,掌握这款软件的使用无疑会提高工作效率,推动科研成果的产出。
本教程将详细解读这两款软件的使用方法,以中文形式呈现,方便国内研究者学习和应用。 Mapmaker3.0是一款功能强大的遗传图谱构建软件,其核心在于能够处理大量遗传标记数据,通过计算标记之间的重组频率,构建遗传...
MapMaker 3.0是一款专为生物学家和遗传学家设计的高级软件工具,它主要用于构建遗传连锁...在生物学研究中,尤其是遗传学领域,MapMaker 3.0的使用极大地提高了工作效率和研究精度,是遗传连锁图谱构建的首选软件之一。
"MAPmaker生物软件"是一款专为生命科学研究设计的软件工具,主要用于基因定位和遗传图谱构建。...在实际使用过程中,熟练掌握MAPmaker的各项功能将极大地提高科研效率,并有助于揭示复杂的遗传模式。
8. **教程与文档**:为了帮助用户更好地理解和使用工具,45MapMaker通常会提供详细的使用指南和教程,帮助用户快速掌握各种功能。 9. **社区支持**:许多类似软件会有活跃的用户社区,用户可以在这里分享地图设计、...
Mapmaker作图软件使用演示资料PPT教案学习.pptx
3. `.project`:这是Eclipse IDE的项目配置文件,表明MapMaker的开发可能使用了Eclipse环境。它包含了构建路径、JRE版本等信息,对理解开发环境和构建流程有重要意义。 4. `bin-debug`:这是一个编译输出目录,通常...
MapMaker Exp3.0b.exe
制图师-制作地图mapmaker为制作Map提供了一个更好的接口,因此您可以传递一个普通对象,而不是默认实现接受的2数组。使用 // default implementationnew Map ( [ [ 'key' , 'val' ] , [ 'greeting' , 'hi' ] ] )// ...
【标题】"AIC21-MapMaker:AIC21简单MapMaker" 是一个与人工智能竞赛(AIC21)相关的地图制作工具。这个工具可能是为了帮助参赛者快速创建、编辑或定制比赛所需的虚拟地图,以供算法训练或比赛策略制定使用。 【描述...
视频图matlab代码MAPmAKER:不确定性下执行多机器人LTL规划的工具 MAPmAKER是一个规划解决方案, 它基于去中心化算法 考虑时间逻辑中给出的复杂的高级任务 当只有部分环境知识可用时,此方法才有效。 作者 克劳迪奥...
C++三维程序
《使用p5.js和柏林噪声构建2D RPG随机地图生成器》 在现代游戏开发中,随机地图生成器已经成为一种重要的工具,特别是在2D角色扮演游戏(RPG)中,它能够为玩家提供丰富的探索体验。本文将深入探讨如何利用开源库p5...
Mapmaker JS 库 规格 一个全局对象Mapmaker ,可用于从map生成mapView 一个mapView包括 输入:能够为map 、 metacodeSet和metacodes PERSISTING:可以通过 Backbone 模型SAVE输出 JSON,用于topic 、 synapse 、 ...
目标是实施多种算法,以使像Roomba的机器人探索环境并使用范围受限的激光传感器对其进行映射。 机器人计算边界以发现最未知的区域。 我在配置空间上使用了A *的优化版本来查找到前沿点的路径。 激光传感器模型使用...
Create React App入门 该项目是通过引导的。 可用脚本 在项目目录中,可以运行: npm start 在开发模式下运行应用程序。 打开在浏览器中查看它。 如果您进行编辑,则页面将重新加载。 您还将在控制台中看到任何...