gpt4 book ai didi

java - 对于以变量集作为键的映射,我应该使用什么数据结构?

转载 作者:行者123 更新时间:2023-12-02 03:38:01 25 4
gpt4 key购买 nike

我的数据集如下所示:

Task-1, Priority1, (SkillA, SkillB)
Task-2, Priority2, (SkillA)
Task-3, Priority3, (SkillB, SkillC)

调用应用程序(客户端)将发送技能列表 - 例如(SkillD、SkillA)。

查找:

  1. 首先在数据集中搜索 SkillD,但没有找到任何内容。
  2. 搜索技能A。我们将找到两个条目 - Task-1 具有 Priority1,Task-2 具有 Priority2。
  3. 确定具有最高优先级的任务(在本例中为 Task-1)
  4. 从该数据集中删除 Task-1 并将 Task-1 返回给客户端

设计考虑:

  • 网站上线后会对数据集进行大量添加/更新/删除
  • 只有很少的技能,但不是静态列表(大约 10 个),但对于每个技能,可以有数千个任务。因此,查找/检索必须非常快

我考虑过使用binarySearch(比较器)或Map(技能,SortedSettasks(任务))的简单列表,但正在寻找更多想法。

为此类数据集设计数据结构的最佳方法是什么,该数据结构允许使用复杂的键以及与该键关联的已排序任务数组。

最佳答案

稍微改变一下方法怎么样?您可以使用 Guava和一个Multimap特别是。

Every experienced Java programmer has, at one point or another, implemented a Map<K, List<V>> or Map<K, Set<V>>, and dealt with the awkwardness of that structure. For example, Map<K, Set<V>> is a typical way to represent an unlabeled directed graph. Guava's Multimap framework makes it easy to handle a mapping from keys to multiple values. A Multimap is a general way to associate keys with arbitrarily many values.

从概念上考虑 Multimap 有两种方法:作为从单个键到单个值的映射的集合:

我建议您使用 Multimap 并通过 Multimap 引入的强大功能 Views 来解决您的问题。

祝你好运!

关于java - 对于以变量集作为键的映射,我应该使用什么数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37211366/

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