gpt4 book ai didi

java - 如何使用共享 key 正确关联多个 BiMap 集合?

转载 作者:行者123 更新时间:2023-12-01 14:51:16 35 4
gpt4 key购买 nike

我有以下 BiMap 集合:

BiMap<String,String> accessIds = HashBiMap.create();
accessIds.put("FOO","accessId 1"); //This access Id is common to both FOO and BAR

BiMap<String,String> merchants = HashBiMap.create();
merchants.put("FOO", "merchant 1"); //Both FOO and BAR each have unique merchants
merchants.put("BAR", "merchant 2");

这是我目前拥有的 4 个 Collection 中的 2 个。所有 4 个集合共享相同的键,但具有不同的值。

我的问题是:当我的 accessIds 键为 FOO 时,如何确保我可以获得 merchant 2

在有人指出这两个集合实际上并不共享相同的键之前,请记住 BiMap 强制执行唯一值,因此我无法列出“BAR”、“accessId 1” 在集合中。

我不相信 BiMap 是正确的集合,但我确实使用了它的 inverse() 方法。如果有更适合的集合(或我忽略的其他方法),请告诉我。

仅供引用:我使用 Guava-14.0-rc1 作为 BiMap 集合。

最佳答案

根据您的评论,在您的工作流程中,访问 ID 是一个键,而不是一个值,至少在一种情况下具有多个关联值,而不是一个。

您可以使用Multimap对于您的访问IDS,假设您可以选择保留哪个值作为访问其他Map(或BiMap)的 key ,尽管通过您的示例不清楚为什么它们 BiMap,但我猜这是不相关的)。

ImmutableMultimap.Builder<String, String> builder = ImmutableMultimap.builder();
builder.put("FOO", "accessId 1");
builder.put("BAR", "accessId 1");
ImmutableMultimap<String, String> accessIds = builder.build();
ImmutableMultimap<String, String> byAccessIds = accessIds.inverse();

Collection<String> keys = byAccessIds.get("accessId 1"); // ["FOO", "BAR"]
String key = doSomething(keys); // "BAR" is chosen
String merchant = merchants.get(key); // "merchant 2"

如果您无法使用不可变的结构,您还可以为 accessIds 构建常规的 Multimap(例如使用 HashMultimap )并使用 Multimaps.invertFrom() 对其进行反演。 .

关于java - 如何使用共享 key 正确关联多个 BiMap 集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14818656/

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