我需要选择ArrayList<Conference> conferences
,其中Conference
包含public Date beginDate
参数,并按如下方式排序:首先,将会议分成多个桶,这些桶代表{{1}的唯一月份然后在桶中对beginDate
本身进行排序。我确信这是一个常见的需求所以我希望这里有人会有一些提示。
我的想法如下。请告诉我为什么它不是最佳的:)
beginDate
。HashMap<Date, ArrayList<Conference>>
进行迭代并使用特殊的静态函数查找conferences
月份的第一天,检查beginDate
是否有ArrayList<Conference>
。然后将它们添加到Date
的{{1}}(由于ArrayList
相同,所以它们都应该相同。Date
的{{1}}成员进行迭代,并使用标准排序程序按日期对first_day_of_month(any_day_in_month)
进行排序。这似乎比必要的更复杂,但请让我知道为什么它很糟糕,可以做些什么来解决它。
编辑:此外,如果重要,我最终还是需要将所有这些ArrayList
添加回HashMap
,这将进入commonsware的ArrayList
... :(
答案 0 :(得分:3)
如果您从最开始按日期排序,则该月份的参赛作品将随后进行。在初始排序之后,您可以迭代所有条目,并在条目是新月的第一个条目时进行人工“拆分”。我甚至不确定你是否需要做这种区分(可能因为这个问题有点模糊)。
提出的算法的总复杂度为O(nlog n)
,其中n
是元素的数量,当然没有更好的解决方案。
注意顺便说一下,这个算法比你在操作复杂性上提出的算法要好。