java - 列表作为键值存储的键

标签 java hash key-value-store

我想在数据库中存储键值对,其中键是整数列表或一组整数。

我的用例有以下步骤

  1. 我将获得一个整数列表
  2. 我需要检查该整数列表(作为键)是否已存在于数据库中
  3. 如果存在,我将需要从数据库中获取该值

如果数据库中不存在整数列表(或整数集),我需要执行某些计算,如果存在,那么我只想传递值并避免计算。

我正在考虑将数据保存在键值存储中,但我希望键专门是一个列表或一组整数。

我考虑过以下选项

选项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/

相关文章:

java - AndroidDebugKey Keystore被篡改,或者密码不正确

java - 将Json日期转换为java日历

algorithm - 列表哈希函数

javascript - 如何使用blueimp jquery上传插件获取每个 block 的md5迭代md5和

ios - 仅使用键值存储检测 iCloud 帐户可用性/更改?

mongodb - 基于文档的数据存储(例如 Mongo)与键值存储相比如何实现?

java - Netbeans 将 root 设置为作者

java - Supplier 应该用来提供文件流吗?

arrays - 如何在Perl中访问哈希数组?

jenkins - Jenkins 的键值存储选项