我有一个假日对象数组(由一个字符串名称和一个日期时间组成)。我有一个 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/