代码之家  ›  专栏  ›  技术社区  ›  AfterWorkGuinness

ArrayList.sort()与PriorityQueue[重复]

  •  9
  • AfterWorkGuinness  · 技术社区  · 6 年前

    我需要支持更多的插入而不是读取,并保持数据排序。哪种表现更好:

    使用 PriorityQueue 提供比较器

    使用 ArrayList 打电话来 .sort() 每次插入后?

    打电话 .sort() 每次都感觉不对,但我说不清原因。

    2 回复  |  直到 6 年前
        1
  •  10
  •   devoured elysium    6 年前

    优先级队列不会使您的数据保持排序。它只允许你调用它的最小元素。如果对优先级队列中的所有元素都这样做,最终将能够形成一个排序元素列表。不过,您将有一个空的优先级队列。

    因此,如果您需要能够在不改变数据结构的情况下在任何位置动态读取内容,则优先级队列不适合您。

        2
  •  2
  •   Eugene    6 年前

    PriorityQueue 是最小/最大堆-数据是 在它里面;你总是需要打电话 poll 直到队列耗尽-因为队列中的第一个元素总是“最小/最大”的元素,根据您的需要 Comparator

    你真的在找 TreeSet ; 不用打电话了 sort