我想在数据库中存储键值对,其中键是整数列表或一组整数。
我的用例有以下步骤
- 我将获得一个整数列表
- 我需要检查该整数列表(作为键)是否已存在于数据库中
- 如果存在,我将需要从数据库中获取该值
如果数据库中不存在整数列表(或整数集),我需要执行某些计算,如果存在,那么我只想传递值并避免计算。
我正在考虑将数据保存在键值存储中,但我希望键专门是一个列表或一组整数。
我考虑过以下选项
选项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/