繁体   English   中英

用Java查找最大记录

[英]Finding max record with java

我有一个问题说明,想知道在Java中解决问题的最佳方法。

我有大量记录(比如说有100万条记录),这些记录有时间戳和值。 我必须在每15分钟的跨度中获得输出,这是最高值。

E.g.
Timestamp
-07-10-2013 10.15 - 14
-07-10-2013 10.18 - 13
-07-10-2013 10.19 - 18
-07-10-2013 10.30 - 16
-07-10-2013 10.34 - 10
-07-10-2013 10.38 - 17
-07-10-2013 10.42 - 30
-07-10-2013 10.54 - 23
-07-10-2013 10.57 - 44

输出量

-07-10-2013 10.19 - 18
-07-10-2013 10.42 - 30
-07-10-2013 10.57 - 44

用Java做到这一点的最好方法是什么。 遍历每条记录看起来很乏味。 任何帮助都会很棒。

除非迭代每个值,否则您将无法获得最大值,除非它们具有某种预定义的顺序(可用于优化)。

我将使用Map来累积最高值,并将其与先前存储的值进行比较,这样您就可以在一次迭代中通过记录获得最高值。

为您的班级做一个比较器。 将对象存储在TreeSet中。 使用TreeSet.descendingIterator可以显示n个具有最高时间戳的对象。

请注意,只有在保证时间戳唯一的情况下,此解决方案才是好的。 否则,请使用PriorityQueue。

编写比较器并使用

Collections.sort(list, Collections.reverseOrder(yourComparator));

并始终从列表中获取第一个元素。

, tree set is sortable and navigable its what you need. 我建议是可排序和可导航的,它是您所需要的。 不要忘记使用比较器,它提供了比较功能,用于识别最小,最大,排序。

如果只需要最大值,则不必对整个列表进行排序。 相反,您可以使用冒泡排序,并且在一次迭代中,您将获得最高的值(复杂度为O(n))。 请注意,TreeSet和Collections.sort相当昂贵,因为它们尝试对整个集合进行排序,这在您的情况下不是必需的。

暂无
暂无

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

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