0 0

java中key-value数据有重复KEY如何存储0

如题,在java程序开发中,一般采用MAP来存储key-value的数据,在特殊应用场景下,key会出现重复而且不能覆盖的情况,采用HashMap无法满足需求,而采用IdentityHashMap时,如果不通过遍历KEY的方式又无法获取到指定KEY的值,有没有什么其它好的方式来解决这样的数据存储呢?目前多数人可能会采用双List方式,通过KEY-List的索引号来获取的对应的值的方式,在SEE平台中,我们还尝试使用双LIST实现具有Map特性的特殊Map,但未进行压力测试其效能,而且不支持多线程同时遍历。
2012年8月15日 10:59

5个答案 按时间排序 按投票排序

0 0

试试List吧

2012年8月16日 15:46
0 0

1.在业务上改下key的值,让key继续唯一不就行了吗?在相同的key后面加上一位不就可以
为什么一定要key一样呢?

2012年8月16日 13:47
0 0

什么叫 key-value??

key的意思就是不重复!
不论是 Map   还是 List, 都有 不同的实现, 有的支持 多线程 有的不支持。


先弄清楚你到底要什么样的 数据结构, 再 选择其 是否 支持 多线程 的实现

比如 synchronizedList   vector synchronizedMap

2012年8月16日 03:20
0 0

建议,继承HashMap.
如果插入一个重复的key是,首先判断此key是否存在,如果存在在key后面加一个特殊标记符例如如@@1.
在取出重复的key时,先找出已改key作为开头的key的所有entry,然后在比较value,取出合适的.
其它的方法类似

2012年8月15日 17:58
0 0

我对术语不大熟悉,双List是什么意思?

我觉得,Key-List就可以了吧。应该就是下面这样的结构。

Map<Key, List<Value>>

多线程的话,需要自己做同步处理了。
大体思路就是,实现自己的Map类,在这个类里面,用Key做同步锁就OK了。

你可能知道,HashMap也不是线程安全的。

2012年8月15日 15:44

相关推荐

Global site tag (gtag.js) - Google Analytics