我想将键值对存储在数据库中,其中key是一个整数列表或一组整数。
我的用例具有以下步骤
我会得到一个整数列表
我将需要检查数据库中是否已经存在整数列表(作为键)
如果存在,我将需要从数据库中获取值
如果DB中不存在整数列表(或整数集),则需要执行某些计算,如果有,那么我只想传递值并避免计算。
我正在考虑将数据保存在键值存储中,但我希望键专门是列表或整数集。
我考虑过以下选项
选项A
为整数列表生成唯一的哈希,并将其作为键存储在键/值存储中
问题:
我将遇到哈希冲突,这将破坏我的用例。我相信没有办法在100%的时间内生成具有唯一性的哈希。
这是行不通的。
如果有机会生成唯一的哈希(100%)次,那是最好的方法。
选项B
使用整数列表或整数集创建一个不可变的类,并将其存储为我的键值存储区的键。
请分享实现需求的任何可行方法。
最佳答案
您不需要做任何特别的事情:
Map<List<Integer>, String> keyValueStore = new HashMap<>();
List<Integer> key = Arrays.asList(1, 2, 3);
keyValueStore.put(key, "foo");
所有JDK集合都仅基于列表的内容实现明智的
equals()
和hashCode()
。关于java - 列为键值存储的键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57336563/