java - List 是将日期与假期集合进行比较的最佳集合方法吗?

标签 java collections jodatime

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

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

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

最佳答案

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

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

您还可以使用 TreeSet,它可以保持假期排序,并且还允许在 O(log(n)) 时间内进行搜索。

或者您可以使用 HashSet,这将使搜索复杂度为 O(1)(恒定时间),但不会保持其元素已排序。

关于java - List 是将日期与假期集合进行比较的最佳集合方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22574718/

相关文章:

java - 如何在模型和 View 方法中返回url?

java - Spring在bean中注入(inject)任务执行器

Java 集合 : Compare elements in collection with each other and remove in one cycle

C# ObservableCollection.IndexOf(...) 返回 -1

jodatime DateTime.getMillis 是 UTC,对吗?时代

java-8 - 使用 Java8 将年份字符串解析为 LocalDate

java - 当Android方法被贬值时我该怎么办?

特殊字符的Java replaceAll正则表达式[

c# - 非通用类中的通用属性?

java - 将字符串转换为本地日期