【发布时间】:2020-04-21 23:00:49
【问题描述】:
我有一个优先级列表
List<String> priorities = Arrays.asList("NV","PH","OO","DR");
我有一个项目列表List<Item> availableItems,其中项目有一个名为type 的属性,它可以是第一个列表中的值之一。
所以我正在研究一种方法,它返回一个元素(最高优先级),我正在做一些比较器和排序的事情,但我正在阅读它,据说它需要很长时间,因为 availableItems可以有很多元素,所以可能是O(NLogN)。
我想要实现的是,如果有一个带有typeNV 的元素返回是因为是最高优先级,如果不是带有PH 的元素等等,如果没有一个元素,然后返回列表的任何元素,因为它们没有,但是没有使用比较器或者成本不高
【问题讨论】:
-
您可以通过对无序列表进行一次迭代来实现此目的;但是,只有在找到
type或"NV"的元素时才能短路 -
您可以使用 TreeMap
,其中整数是优先级编号。 1 - NV、2 - PH 等。然后您只需获取第一个键值对。 -
请提供MCVE,其中包括您的尝试,即使它不起作用。
标签: java arrays performance java-8