[英]Java Sorting Data Structure
我正在从文本文件中获取一个具有多个数据字段(3个字符串字段,两个int字段)的对象,计算出某个数值,然后我需要将它们一个一一地放在数据结构中他们从文件中。 在解析/计算/存储结束时,我需要根据该计算值对结构进行排序,以便可以连续检索/弹出最高值的结构。
我在考虑PriorityQueue,但是对此有更好的结构吗?
编辑:什么会更快? 是否有一个结构可以在程序流的整个过程中进行排序,还是仅将它们放在列表中并在末尾排序?
正如您所建议的,我将使用PriorityQueue。 它使用堆作为数据结构,该结构使元素随您排序。 完成后,您实际上便有了一个有序列表,因此您可以有效地按顺序读取元素。
如果您希望自然排序,则可以选择TreeSet
。 其中元素使用其自然顺序进行排序 ,或者由集合创建时提供的Comparator进行 排序 。
如果您具有计算的数值并将其存储为元素对象内部的变量,则PriorityQueue更合适。 在这种情况下,您可能需要指定适当的Comparator进行同步访问,请访问PriorityBlockingQueue
如果我理解正确,您可以读取并计算该值,然后将其放入“队列”中,然后才需要对队列进行排序? 因为如果仅对队列排序一次(从文件中读取所有数据之后),那么您可能想要使用实现Queue的LinkedList
。
CompareTo
) linkedList.add(myObject)
将所有对象放在LinkedList
Collections.sort(linkedList)
排序 如果每个对象都是一个对象,您不仅可以创建一个compateTo方法来比较两个对象以确定哪个对象应该优先使用,然后使用该方法对您的对象进行排序(可能存储在数组或列表中?)。
我认为您也许应该调查一下: 比较
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.