列表是比较日期和假日集合的最佳集合方法吗?



我有一个假日对象数组(由字符串名称和日期时间组成)。我有一个for循环来查看用户的日期是否是假日。这是我的设置,因为这是我唯一学会的方法。

我一直在阅读列表在大多数情况下比数组更好,但在阅读列表之后,我也开始学习其他集合方法。有没有更好的方法来查看日期是否与给定的假期列表相匹配?

如果可以使用另一种方法,您将如何"搜索"它以查看它是否与给定日期匹配?

在列表中搜索是O(n):你必须遍历每个元素,直到找到匹配的元素。

如果列表是按日期排序的,你可以使用Collections.binarySearch(),这将使过程O(log(n))(因此,更快,除非列表非常非常小,在这种情况下,这无关紧要)。

你也可以使用TreeSet,它将保持假期排序,并允许在O(log(n))时间内搜索。

或者您可以使用HashSet,它将使搜索O(1)(常数时间),但不会保持其元素的排序。

最新更新