【发布时间】:2018-06-01 05:31:14
【问题描述】:
我有 2 个列表 -
-
List<String> RecordIdByPriority和 -
List<String> RecordId。
顾名思义 - 第一个列表包含按优先级插入顺序排列的记录。
这个想法是从第二个列表中找到最高优先级记录的存在。
如果优先级列表包含<A,D,E>,第二个包含<B,E,M> - 预期输出为“E”。
鉴于第二个列表可能很大 - 以最有效的方式实现此目标的数据结构/例程是什么
【问题讨论】:
-
您没有提供足够的信息来提出好的建议。这取决于这些列表如何随时间变化。 (我假设,你想反复这样做)
-
第一个“参考”列表是静态的 - 将被用作重复查找新的“第二个”列表
-
Collections::retainAll是有点矫枉过正的 IMO。只需在RecordIdByPriority中按优先级顺序循环,其中内部循环RecordId,检查contains()并在第一个匹配时立即返回。 -
你只想要一个最高优先级的结果还是所有相交元素的优先级顺序?在后一种情况下,交叉点通常有多大?
-
预期的输出是找到的单个最高优先级记录。
标签: java algorithm list data-structures