Java 如何对列表中的日期进行排序

Java 如何对列表中的日期进行排序,java,sorting,date,Java,Sorting,Date,如何对列表中的日期进行排序 我已经读到,这可以通过使用TreeMap来实现,因为它是一个排序的、可导航的映射,在自平衡二叉树中组织元素。但是它也很贵 我的问题是——实现这一结果的最佳有效方法是什么?这取决于具体情况。如果你想拥有“总是分类”的容器,那么你就是你的朋友。向树映射添加另一个元素将是O(log(n))-(非常好,比线性更快) 若您只需要对它进行一次排序(以后不再添加元素),那个么只需将其放入并使用方法即可。它将是最优的-O(n log(n)) 更新: 正如注释中提到的,Set(Tree

如何对列表中的日期进行排序

我已经读到,这可以通过使用TreeMap来实现,因为它是一个排序的、可导航的映射,在自平衡二叉树中组织元素。但是它也很贵


我的问题是——实现这一结果的最佳有效方法是什么?

这取决于具体情况。如果你想拥有“总是分类”的容器,那么你就是你的朋友。向树映射添加另一个元素将是O(log(n))-(非常好,比线性更快)

若您只需要对它进行一次排序(以后不再添加元素),那个么只需将其放入并使用方法即可。它将是最优的-O(n log(n))

更新:


正如注释中提到的,Set(TreeSet)不能包含重复项。列表(ArrayList)可以
如果性能很重要,并且有很多元素,您需要存储允许重复的排序元素,那么您可以将其存储在TreeSet中,但需要实现计数(
add()
will
element.count++
,以及
remove()
will
element.count--
).

在选择最佳算法之前,您必须定义您的需求。您需要快速执行时间吗?你需要低内存开销吗?是否需要快速检索或插入元素?树形图是一种映射。这不是收藏。至少推荐TreeSet。但是列表和集合的行为不同。一个接受重复的,另一个不接受。这应该是主要的选择因素。@JBNizet:完全同意。我指的是TreeSet(它是在TreeMap之上实现的)。固定在我的职位。非常感谢。