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

Car*_*H20 1 java collections jodatime

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

我一直在读,在大多数情况下,List比数组更好,但在阅读了列表后,我也开始学习其他的收集方法.是否有更好的东西可以看到日期是否与给定的假期列表相匹配?

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

JB *_*zet 5

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

如果列表按日期排序,则可以使用Collections.binarySearch(),这将使进程O(log(n))(因此,除非列表非常小,否则无关紧要).

您也可以使用TreeSet来保持假日排序,并允许在O(log(n))时间内进行搜索.

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