【问题标题】:Is there a way to put multiple values in map with the same key?有没有办法用同一个键将多个值放在地图中?
【发布时间】:2019-02-14 02:46:35
【问题描述】:

我想知道,有没有办法在映射中为同一个键放置多个值?在我的任务中,我要将以下内容放在地图上:

键(AnimalType)值(AnimalType 中的AnimalType)

哺乳动物:鲸蝠鹿狮子|老虎|猎豹

鸟:鸵鸟鹦鹉

鱼:金鱼大白|tigerShark

爬行动物:鳄鱼龟|乌龟

带有“|”的字符串on 它的意思是“或”,因此在哺乳动物组中,它只能是鲸鱼、蝙蝠、鹿和后三种中的任何一种,而不是所有三种(狮子、老虎或猎豹)。有没有办法让 Mammal、Bird、Fish 和 Reptile 成为键,而 ':' 右侧的字符串是值?仅在这种情况下,并非所有这些都应该是值,因为我必须在狮子、老虎和猎豹或任何带有“|”的字符串之间进行选择在他们。如果我的问题没有任何意义,请在下面评论,我会澄清这对我来说很难用语言表达。我将感谢您提供的任何帮助。谢谢!

【问题讨论】:

  • 使用 List 并将其映射到您的密钥
  • 目前尚不清楚它将如何使用,以及“and”或“or”周围的语义是什么。例如,“蝙蝠”和“狮子”有什么区别(除了后者通常不会飞)?看来你需要一个映射的组合,然后像mammel -> whale, bat, deer, felidaefelidae这样的类型层次结构可以是lion | tiger | cheetah
  • 最简单的方法。如果可以导入库,就是使用guava multimap。 ArrayListMultiMap 可能是首选类别。

标签: java dictionary data-structures


【解决方案1】:

您的地图是否只允许使用“|”中的 1 个值,但应该同时允许所有“ ”值?

whale bat deer lion <- valid
whale bat deer tiger <- valid
whale bat lion tiger <- invalid

如果提供的键相同,那么地图将覆盖现有值

但是,如果您使用动物作为键和动物类型作为值,您可以通过通过另一个映射传递您的键来理清互斥约束

编辑 2

为了更好地遵循社区准则,对潜在的剧透进行了编辑

【讨论】:

  • 我不确定我是否正确,但我猜你的练习是将同一组中的动物(即“狮子”和“老虎”)映射到同一类别。这样当它被插入另一个 Map 或 Set 时,它们就会被过滤掉。同样,我不知道您是否需要稍后检索这些值,或者只是将动物存储在类别中就足够了
  • 请给 OP 时间至少先展示他们的尝试。否则,您就是在欺骗他们学习创建自己的代码的机会,而不是激励他们将问题改进到站点标准。请查看How do I ask and answer homework questions? 以查看这些标准。
猜你喜欢
  • 1970-01-01
  • 2020-12-14
  • 1970-01-01
  • 2021-10-25
  • 2021-06-29
  • 2022-01-07
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
相关资源
最近更新 更多