繁体   English   中英

Java排序数据结构

[英]Java Sorting Data Structure

我正在从文本文件中获取一个具有多个数据字段(3个字符串字段,两个int字段)的对象,计算出某个数值,然后我需要将它们一个一一地放在数据结构中他们从文件中。 在解析/计算/存储结束时,我需要根据该计算值对结构进行排序,以便可以连续检索/弹出最高值的结构。

我在考虑PriorityQueue,但是对此有更好的结构吗?

编辑:什么会更快? 是否有一个结构可以在程序流的整个过程中进行排序,还是仅将它们放在列表中并在末尾排序?

正如您所建议的,我将使用PriorityQueue。 它使用堆作为数据结构,该结构使元素随您排序。 完成后,您实际上便有了一个有序列表,因此您可以有效地按顺序读取元素。

如果您希望自然排序,则可以选择TreeSet 其中元素使用其自然顺序进行排序 ,或者由集合创建时提供的Comparator进行 排序

如果您具有计算的数值并将其存储为元素对象内部的变量,则PriorityQueue更合适。 在这种情况下,您可能需要指定适当的Comparator进行同步访问,请访问PriorityBlockingQueue

如果我理解正确,您可以读取并计算该值,然后将其放入“队列”中,然后才需要对队列进行排序? 因为如果仅对队列排序一次(从文件中读取所有数据之后),那么您可能想要使用实现Queue的LinkedList

  • (i)读取数据并创建对象(它们应实现CompareTo
  • (ii)使用linkedList.add(myObject)将所有对象放在LinkedList
  • (iii)对链接列表Collections.sort(linkedList)排序
  • (iv)窥视或弹出第一个元素

如果每个对象都是一个对象,您不仅可以创建一个compateTo方法来比较两个对象以确定哪个对象应该优先使用,然后使用该方法对您的对象进行排序(可能存储在数组或列表中?)。

我认为您也许应该调查一下: 比较

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM