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

問題は、ファイルをstringと同じように扱っている場合、辞書式の順序になることです。それはあなたが望むものではありません。

ファイルを読み込むときに、各行を完全なエントリに解析することを強くお勧めします。その後、Comparator時間に基づいて比較する を簡単に作成できるはずです (ミリ秒数を として保存するか、Joda Timeの型のlongようなものを使用するか)。代わりにクラス (または何でも) を実装することもできますが、ここに「自然な」並べ替え順序があるとは思いません。さまざまな状況でさまざまな比較によって並べ替えることができるのは理にかなっています。を渡すだけで問題ありません。DurationAlbumComparableComparatorCollections.sort

一般に、データをテキストから「より完全な」オブジェクト モデルにできるだけ早く変換し、データをより豊富な形式でできるだけ長く維持することをお勧めします。データを単なる文字列として扱っていると、まさにこの種の問題に悩まされることになります... 一方、豊富なデータを取得すると、あらゆる種類のことがはるかに簡単になります。

コード全体にこの原則を適用します (できるだけ多くの時間、単なる文字列表現ではなく、データの "自然な" 型を操作します)。それはあなたの人生をずっと簡単にします。JDBC パラメーターなどを使用して可能な限り変換を避け、各変数が実際に意味するものにします :)

于 2013-01-07T19:23:43.063 に答える