Java数据结构在强制执行max元素时维护排序顺序

时间:2016-08-11 04:53:45

标签: java performance sorting data-structures

是否存在以下的Java数据结构:

  1. 强制执行最多元素
  2. 维护排序顺序
  3. 所以对于包含max n个元素的列表,如果添加了一个新元素并且属于top n,那么排除最低排名的元素并执行重新排序

    性能特征是什么?

    通过使用底层数组制作自定义解决方案可以获得更好的解决方案吗?

3 个答案:

答案 0 :(得分:3)

您应该考虑使用TreeSet。数据以有序的方式自动添加到那里。

答案 1 :(得分:1)

您可以使用TreeSet快速实现此功能,treeSet.pollFirst()是一种始终自动保持排序的数据结构。

要驱逐最低成员,只要treeSet.size()大于预定义的最大值,就拨打<div style="max-height:50px;height:50px; overflow:auto">

至于性能,TreeSet在O(log(n))时间内添加和删除run。在支持添加和删除的同时使用数组维护sort-ness将会慢得多。

答案 2 :(得分:0)

您还可以使用PriorityQueue实施。

  1. 通过选中size();

  2. 添加元素,直到达到最大限制
  3. 之后,您可以使用peek()检查是否必须添加元素,如果要添加,则删除最低元素,然后添加新元素。 poll(),remove()方法的o(log(n))时间和peek()和size()的常量时间