论坛首页 Java企业应用论坛

如何实现key, value有序的HashMap?

浏览 19470 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-05-25  
抛出异常的爱 写道
BidiMap可以...试试
apache collections


刚看了下BidiMap的介绍
引用
This map enforces the restriction that there is a 1:1 relation between keys and values, meaning that multiple keys cannot map to the same value.


这条可能会影响map的使用吧,至少平时我们对value没有什么限制的。
0 请登录后投票
   发表时间:2009-05-25  
langyu 写道
抛出异常的爱 写道
BidiMap可以...试试
apache collections


刚看了下BidiMap的介绍
引用
This map enforces the restriction that there is a 1:1 relation between keys and values, meaning that multiple keys cannot map to the same value.


这条可能会影响map的使用吧,至少平时我们对value没有什么限制的。


你上边不是说只想处理数值开的吗,怎么现在对value又没有限制了。

0 请登录后投票
   发表时间:2009-05-25  
你用set存这些数据吧...不要用map...
0 请登录后投票
   发表时间:2009-05-25  
woaiwofengkuang 写道
langyu 写道
抛出异常的爱 写道
BidiMap可以...试试
apache collections


刚看了下BidiMap的介绍
引用
This map enforces the restriction that there is a 1:1 relation between keys and values, meaning that multiple keys cannot map to the same value.


这条可能会影响map的使用吧,至少平时我们对value没有什么限制的。


你上边不是说只想处理数值开的吗,怎么现在对value又没有限制了。



至少这个value是可以重复的数值吧。
0 请登录后投票
   发表时间:2009-05-25  
引用
1.HashMap的key, value都是object,而我现在只想比较数值类型的key或value的对象。对于所有数值型,怎么做个通用的比较方法呢?(我先把它们转成Number类,再强制转成double类型进行比较,总觉的这种方法很山寨)。


2.对象多的时候,插入很慢的。它要从链表头一个接一个的比较对象,速度奇慢无比,怎么能优化下呢?(网上找“查找有序链表”时,都是那个key等于key或value,而我现在想要的不是“等于”而是“接近”,也就是如何生成一个有序链表)


第一条,没啥好办法.
第二条,应该是用树型的结构吧.
0 请登录后投票
   发表时间:2009-05-25  
搜索树是比较合适的选择
虽然TreeMap只比较key,但你可以写个类似的,加上value比较
0 请登录后投票
   发表时间:2009-05-25  
javaeyebird 写道
搜索树是比较合适的选择
虽然TreeMap只比较key,但你可以写个类似的,加上value比较


这个想法不错,因为key-value对是一个entry,存储的时候也可以把他们翻过来,用value作为key
不过这里的"key"是可重复的
输出迭代时,再把key与value翻过来
差不多
0 请登录后投票
   发表时间:2009-05-25   最后修改:2009-05-25
langyu 写道
javaeyebird 写道
搜索树是比较合适的选择
虽然TreeMap只比较key,但你可以写个类似的,加上value比较


这个想法不错,因为key-value对是一个entry,存储的时候也可以把他们翻过来,用value作为key
不过这里的"key"是可重复的
输出迭代时,再把key与value翻过来
差不多

把entry

重实现hash + compare方法
先比value 再比key
塞到set中去
反回set的iterator...不知道这方法的效率高否
0 请登录后投票
   发表时间:2009-05-25  
抛出异常的爱 写道
langyu 写道
javaeyebird 写道
搜索树是比较合适的选择
虽然TreeMap只比较key,但你可以写个类似的,加上value比较


这个想法不错,因为key-value对是一个entry,存储的时候也可以把他们翻过来,用value作为key
不过这里的"key"是可重复的
输出迭代时,再把key与value翻过来
差不多

把entry

重实现hash + compare方法
先比value 再比key
塞到set中去
反回set的iterator...不知道这方法的效率高否


对这个说法不太明白。
放到哪种Set中去?
先比较value的话,怎么处理value值相同的问题?


PS:起初不想使用set的原因是value是可重复的,还有HashSet还是把HashMap包装了一层,我觉着增加了复杂性。

0 请登录后投票
   发表时间:2009-05-25   最后修改:2009-05-25
langyu 写道
抛出异常的爱 写道
langyu 写道
javaeyebird 写道
搜索树是比较合适的选择
虽然TreeMap只比较key,但你可以写个类似的,加上value比较


这个想法不错,因为key-value对是一个entry,存储的时候也可以把他们翻过来,用value作为key
不过这里的"key"是可重复的
输出迭代时,再把key与value翻过来
差不多

把entry

重实现hash + compare方法
先比value 再比key
塞到set中去
反回set的iterator...不知道这方法的效率高否


对这个说法不太明白。
放到哪种Set中去?
先比较value的话,怎么处理value值相同的问题?


PS:起初不想使用set的原因是value是可重复的,还有HashSet还是把HashMap包装了一层,我觉着增加了复杂性。


中间借助set的了排序方式....
我喜欢用set来排序....
0 请登录后投票
论坛首页 Java企业应用版

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