gpt4 book ai didi

java - 在 Java 中是否存在这样的数据类型?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:35:19 25 4
gpt4 key购买 nike

我在 redis 中发现了这个,并试图查看 Java 中是否有类似的东西。假设我有以下数据:

3:1
3:2
3:3
4:1

如您所见,没有一个数据点本身是唯一的,但组合是唯一的。 redis中有一个命令:

sadd 3 1 2
sadd 3 3
sadd 4 1

那会给我这样的东西:

3 -> 1, 2, 3
4 -> 1

通过执行 smembers 3(这将返回 3 的所有内容)或 smembers 3 2(如果子值存在则返回)。

我想知道在 Java 中我最接近这个功能的是什么?

最佳答案

Guava MultiMap 接口(interface)正是这样做的。请注意,是否允许重复 <K,V> 取决于特定的实现对。听起来您正在寻找 K,V 对始终唯一的对象。如果是这样,请查看 HashMultimap 类。


但是,如果您想自己推出,您可能正在寻找 Map 的组合和 Set : Map<Integer,Set<Integer>>

当你向 map 添加(键,值)元素时:

  1. 首先检查 key 是否在里面。如果没有,您需要添加一个空的 Set<Integer> .
  2. 然后,执行 map.get(key).put(value);

当您想要检索具有特定键的所有元素时:

  1. do map.get(key)并迭代结果

当您想查看其中是否存在特定键/值对时:

  1. if(map.containsKey(key) && map.get(key).contains(value))

为了获得额外的荣誉,您可以在一个包装器中实现所有这些。 ForwardingMap 来自 Guava 可能是一个很好的起点。

关于java - 在 Java 中是否存在这样的数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9678591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com