论坛首页 Java企业应用论坛

将HashMap文件化

浏览 11439 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-04-23  
iamlotus 写道
你这行事先知道吗?
知道的话遍历一遍,把hash相同的在内存里比较不就完了?

遍历一遍得把所有的hash值都存下来是吧,不然咋知道有hash相同的?这值到是可以把value设成空,可以节省内存空间。嗯。。等下,遍历一遍貌似得两个循环吧,不然咋找?

iamlotus 写道

不知道就学数据库建B+树,用file based hash空间太大,肯定不合算。其实不用那么麻烦,建张表,建个UK,然后全部insert进去不就完了?千万而已,又不是千亿,数据库吃得消。


用数据库整到是没试过,千万的话,字符串长度32,得多长时间?比如是个8核,64G的机器。
0 请登录后投票
   发表时间:2011-04-25  
lenozhi 写道
iamlotus 写道
你这行事先知道吗?
知道的话遍历一遍,把hash相同的在内存里比较不就完了?

遍历一遍得把所有的hash值都存下来是吧,不然咋知道有hash相同的?这值到是可以把value设成空,可以节省内存空间。嗯。。等下,遍历一遍貌似得两个循环吧,不然咋找?

iamlotus 写道

不知道就学数据库建B+树,用file based hash空间太大,肯定不合算。其实不用那么麻烦,建张表,建个UK,然后全部insert进去不就完了?千万而已,又不是千亿,数据库吃得消。


用数据库整到是没试过,千万的话,字符串长度32,得多长时间?比如是个8核,64G的机器。


比如你有一组值A[]={A1 A2 A1 A3}, hash后分别是 {H1,H1,H1,H2} (假设A1,A2hash相等)
你的需求究竟是 “已知A1,问A中是否有和A1相同的值” 还是 “已知A,问其中有哪些值出现了一次以上”?
前者就是事先知道这行,后者就是不知道这行。
对前者,事先由A1算出 H1,然后遍历一遍A即可,连HashSet都不用,怎么会要两个循环?
后者你自己试试就知道时间了,配置不同不一样的。我估计不出插入时间,不过select应该能在20秒搞定。
0 请登录后投票
   发表时间:2011-04-25   最后修改:2011-04-25
iamlotus 写道
lenozhi 写道
iamlotus 写道
你这行事先知道吗?
知道的话遍历一遍,把hash相同的在内存里比较不就完了?

遍历一遍得把所有的hash值都存下来是吧,不然咋知道有hash相同的?这值到是可以把value设成空,可以节省内存空间。嗯。。等下,遍历一遍貌似得两个循环吧,不然咋找?

iamlotus 写道

不知道就学数据库建B+树,用file based hash空间太大,肯定不合算。其实不用那么麻烦,建张表,建个UK,然后全部insert进去不就完了?千万而已,又不是千亿,数据库吃得消。


用数据库整到是没试过,千万的话,字符串长度32,得多长时间?比如是个8核,64G的机器。


比如你有一组值A[]={A1 A2 A1 A3}, hash后分别是 {H1,H1,H1,H2} (假设A1,A2hash相等)
你的需求究竟是 “已知A1,问A中是否有和A1相同的值” 还是 “已知A,问其中有哪些值出现了一次以上”?
前者就是事先知道这行,后者就是不知道这行。
对前者,事先由A1算出 H1,然后遍历一遍A即可,连HashSet都不用,怎么会要两个循环?
后者你自己试试就知道时间了,配置不同不一样的。我估计不出插入时间,不过select应该能在20秒搞定。

是知道A,A存在于文件中。找出A中重复的。jdbm那个还不错,我试过。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics