0

我有几千行看起来像这样(显然有不同的数字):

9994 ms - Total Recall DVD: 
99945 ms - classical music: 
99946 ms - ruth rendell: 
99949 ms - house beautiful january 1964: 
9995 ms - Killing Lincoln: 
9995 ms - TITLE:THE INTERCEPT AND AUTHOR:Wolf: 
9995 ms - TITLE:the amazing spiderman: 
9995 ms - everywhere russo: 
9995 ms - treasure yourself: 
9995 ms - what to expect when you're expecting: 
99952 ms - building endurance: 
9996 ms - Number the stars: 
9996 ms - The son of neptune: 
9996 ms - forsate saga, Narrowed By: LIBRARY: 

如果我将此文件读入java,按查询时间排序的最佳方法是什么?

4

1 回答 1

3

问题是当您将文件作为字符串处理时,您将获得字典顺序。那不是你想要的。

我强烈建议您在读入文件时,将每一行解析为一个完整条目。之后,应该很容易创建Comparator基于时间进行比较的 a (无论您将毫秒数存储为 along还是使用类似Joda TimeDuration类型)。虽然您可以改为实现类(Album或其他)Comparable,但我认为这里没有“自然”的排序顺序 - 能够在不同情况下通过各种不同的比较进行排序是有意义的。只需通过Comparator进入Collections.sort,你会没事的。

一般来说,我建议尽早将数据从文本转换为“更完整”的对象模型,然后尽可能长时间地将数据保持在更丰富的格式中。当您将数据作为字符串处理时,您将遇到这类问题……而当您拥有丰富的数据时,各种事情都会变得容易得多。

在整个代码中应用此原则(尽可能多地使用“自然”类型的数据,而不仅仅是字符串表示)。它会让你的生活变得简单很多。尽可能避免使用 JDBC 参数等进行转换,并让每个变量真正代表它所说的:)

于 2013-01-07T19:23:43.063 回答