java - 交叉记录列表

标签 java algorithm list data-structures

我有 2 个列表 -

  • List<String> RecordIdByPriority
  • List<String> RecordId .

顾名思义 - 第一个列表包含按插入优先顺序排列的记录。
这个想法是从第二个列表中找到最高优先级记录的存在。

如果优先列表包含<A,D,E> ,第二个包含 <B,E,M> - 预期输出为“E”。

鉴于第二个列表可能很大 - 以最有效的方式实现此目的的数据结构/例程是什么

最佳答案

您可以进行一些一次性预处理,将 List<String> RecordIdByPriority 变为进入HashMap<String, Integer>将列表中的每个项目映射到它在列表中的位置。在您的示例中 { A -> 0, D -> 1, E -> 2 }。然后单次通过 RecordId list根据hash map找到最小元素。在 map 中找不到的元素具有 +infinity 的隐式优先级。

这意味着您可以在 O(n) 中找到元素,其中 n 是记录 ID 列表的长度。

关于java - 交叉记录列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50636637/

相关文章:

java - 使用指向除下一个节点之外的随机节点的指针复制 LinkedList

r - R中列表的交集

java - UML 图 + Android 类

java - 验证 Java 中的数学运算

java - Android Eclipse - 找不到 *.apk

java - 额外存储归并排序

algorithm - 带有扭曲的二分匹配

java - 无法在 Eclipse 中保存 .html 文件

java - Java LinkedList的遍历和打印

python - 使用 Python pandas 根据条件将行值复制到另一列