`
yznxing
  • 浏览: 371194 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

mapMaker使用后记

    博客分类:
  • java
阅读更多

在上一篇使用   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,软,弱,虚引用!

 

 

 

 

 

 

0
1
分享到:
评论
2 楼 yznxing 2010-05-12  
RednaxelaFX 写道
其实一直有人抱怨着玩儿的softKeys无法指定比较方式。有时候我们需要的就是equals而不是==。诶。或许以后的版本会有改进的,这地方。



恩。。因为这个我就吧softKeys给去掉了。。。
换成默认的了,悲剧。。。

1 楼 RednaxelaFX 2010-05-12  
其实一直有人抱怨着玩儿的softKeys无法指定比较方式。有时候我们需要的就是equals而不是==。诶。或许以后的版本会有改进的,这地方。

相关推荐

    mapmaker 中文使用说明

    本文将详细介绍如何使用MapMaker 3.0进行基因定位,通过实例演示以F2定位群体为例,介绍其在基因定位中的应用流程。 #### 数据整理 在使用MapMaker 3.0之前,首先需要对实验数据进行整理。以下步骤展示了如何将...

    mapmaker3.0中文使用说明书

    《Mapmaker 3.0中文使用说明书》详细阐述了这款广泛应用在遗传图谱构建和QTL定位领域的软件的功能、数据组织方式以及基本操作流程。Mapmaker 3.0是一款专为个人计算机(PC)设计的强大工具,它在生物信息学研究中...

    mapmaker exp V4.01.rar

    《Mapmaker EXP V4.01:遗传育种作图软件的进阶解析》 Mapmaker EXP是一款在遗传育种领域广泛应用的专业软件,...对于从事遗传育种研究的科研工作者而言,掌握这款软件的使用无疑会提高工作效率,推动科研成果的产出。

    Mapmaker3.0_winQTLCart2.0简单中文教程和举例

    本教程将详细解读这两款软件的使用方法,以中文形式呈现,方便国内研究者学习和应用。 Mapmaker3.0是一款功能强大的遗传图谱构建软件,其核心在于能够处理大量遗传标记数据,通过计算标记之间的重组频率,构建遗传...

    mapmaker3.0.rar

    MapMaker 3.0是一款专为生物学家和遗传学家设计的高级软件工具,它主要用于构建遗传连锁...在生物学研究中,尤其是遗传学领域,MapMaker 3.0的使用极大地提高了工作效率和研究精度,是遗传连锁图谱构建的首选软件之一。

    MAPmaker生物软件

    "MAPmaker生物软件"是一款专为生命科学研究设计的软件工具,主要用于基因定位和遗传图谱构建。...在实际使用过程中,熟练掌握MAPmaker的各项功能将极大地提高科研效率,并有助于揭示复杂的遗传模式。

    45MapMaker

    8. **教程与文档**:为了帮助用户更好地理解和使用工具,45MapMaker通常会提供详细的使用指南和教程,帮助用户快速掌握各种功能。 9. **社区支持**:许多类似软件会有活跃的用户社区,用户可以在这里分享地图设计、...

    Mapmaker作图软件使用演示资料PPT教案学习.pptx

    Mapmaker作图软件使用演示资料PPT教案学习.pptx

    L78Z MapMaker.rar

    3. `.project`:这是Eclipse IDE的项目配置文件,表明MapMaker的开发可能使用了Eclipse环境。它包含了构建路径、JRE版本等信息,对理解开发环境和构建流程有重要意义。 4. `bin-debug`:这是一个编译输出目录,通常...

    MapMaker Exp3.0b.exe

    MapMaker Exp3.0b.exe

    mapmaker:制作地图

    制图师-制作地图mapmaker为制作Map提供了一个更好的接口,因此您可以传递一个普通对象,而不是默认实现接受的2数组。使用 // default implementationnew Map ( [ [ 'key' , 'val' ] , [ 'greeting' , 'hi' ] ] )// ...

    AIC21-MapMaker:AIC21简单MapMaker

    【标题】"AIC21-MapMaker:AIC21简单MapMaker" 是一个与人工智能竞赛(AIC21)相关的地图制作工具。这个工具可能是为了帮助参赛者快速创建、编辑或定制比赛所需的虚拟地图,以供算法训练或比赛策略制定使用。 【描述...

    视频图matlab代码-MAPmAKER:多机器人专用环境

    视频图matlab代码MAPmAKER:不确定性下执行多机器人LTL规划的工具 MAPmAKER是一个规划解决方案, 它基于去中心化算法 考虑时间逻辑中给出的复杂的高级任务 当只有部分环境知识可用时,此方法才有效。 作者 克劳迪奥...

    MapMaker.rar

    C++三维程序

    MapMaker:使用基于柏林噪声的 p5.js 制作的 2D RPG 随机地图生成器-开源

    《使用p5.js和柏林噪声构建2D RPG随机地图生成器》 在现代游戏开发中,随机地图生成器已经成为一种重要的工具,特别是在2D角色扮演游戏(RPG)中,它能够为玩家提供丰富的探索体验。本文将深入探讨如何利用开源库p5...

    mapmaker:用于概念映射 + 实时协作的 javascript 库

    Mapmaker JS 库 规格 一个全局对象Mapmaker ,可用于从map生成mapView 一个mapView包括 输入:能够为map 、 metacodeSet和metacodes PERSISTING:可以通过 Backbone 模型SAVE输出 JSON,用于topic 、 synapse 、 ...

    umu-ai-mapmaker:于默奥大学的AI作业。 使用MRDS的带有激光扫描仪的Roomba型机器人的地图制作

    目标是实施多种算法,以使像Roomba的机器人探索环境并使用范围受限的激光传感器对其进行映射。 机器人计算边界以发现最未知的区域。 我在配置空间上使用了A *的优化版本来查找到前沿点的路径。 激光传感器模型使用...

    senso-adventure-mapmaker

    Create React App入门 该项目是通过引导的。 可用脚本 在项目目录中,可以运行: npm start 在开发模式下运行应用程序。 打开在浏览器中查看它。 如果您进行编辑,则页面将重新加载。 您还将在控制台中看到任何...

Global site tag (gtag.js) - Google Analytics