我想将键值对存储在数据库中,其中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/

10-12 00:36
查看更多