【问题标题】:What is the best way to store key,value pairs in Java? [duplicate]在 Java 中存储键值对的最佳方法是什么? [复制]
【发布时间】:2020-01-05 03:10:52
【问题描述】:

假设我们想将某个键关联到一组不同的值,并假设映射是单射的。我希望能够做一些事情,并且尽可能快地完成它们:获取给定值的键并获取与给定键对应的值。但是,如果可能的话,我想在 O(1) 中进行密钥检索。

有多种方法可以在 Java 中存储键值对,例如使用字典或哈希图。但两者都不是完美的:例如,这两种结构都没有从给定值中检索键的方法。我的值是正整数对。将键存储在矩阵中可能会更好,这样我就可以立即检索它们。

根据我的需要,最好的选择是什么?

【问题讨论】:

    标签: java dictionary hashmap


    【解决方案1】:

    如果键是唯一的并且值是唯一的,那么您可以创建一个反转的 hashmap,否则我只会循环遍历 HashMap,当值等于时返回键。

    【讨论】:

    • 问题是,我真的需要尽快检索给定值的键。将键存储在矩阵中(由我的值对 (i,j) 索引)会不会更快,因为键检索会立即进行?
    • 但这也只有在你只有一次键和一次值的情况下才有可能,然后根据对象的复杂性,我会使用哈希图而不是数组,但对于更简单的对象,矩阵也是可以的。
    • 是的,我所有的键和值都是不同的。我将在 for 循环中查找给定值的键,所以这就是为什么我真的想尽快进行键检索。
    • 好的,那么考虑到键和值的复杂性,我会使用哈希图或数组。
    【解决方案2】:

    我主张通过 apache 集合使用 BidiMap。

    【讨论】:

      猜你喜欢
      • 2017-02-22
      • 2010-11-11
      • 2011-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-21
      • 1970-01-01
      • 2020-02-03
      相关资源
      最近更新 更多