0

配列リストで重複する要素を見つける方法があるかどうか疑問に思いました。私がやろうとしていることのより多くの文脈のために、私は文字列の配列リストを持っています。文字列にはそれぞれ、MP3ファイルに関する情報が含まれています。タイトル、作曲家、実行時間は「&」文字で区切られています(例:Friday&Rebecca Black&666)。

配列リストは、実行時間に応じてすでにクイックソートされています。ただし、曲の実行時間が等しい場合はタイトルで辞書式順序に並べられ、タイトルも同じである場合は作曲家で並べ替えられるように、配列リストも並べ替える必要があります。

compareToこのメソッドを使用して必要に応じてアルファベット順に並べ替えることができるように、配列リストで重複する実行時間を見つけられるようにしたいと思います。文字列全体から関連情報を抽出するメソッドgetTime、、getTitleをすでに実装しました。getComposerのような新しい方法でこれを行う方法alphabeticalはありますか、それともクイックソートアルゴリズムに組み込んで、並べ替えられた配列リストを再度検索する必要がないようにする方法はありますか?

ありがとう。

4

2 に答える 2

7

同点の場合(実行時間が等しい)にタイトルと作曲家が表示されるように、ソートに合わせてコンパレータを変更する必要があります。見る:

 java.util.Collections.sort(List list, Comparator c) 

特に主要な方法:

int compare(Object o1, Object o2) 
于 2011-05-27T19:57:06.177 に答える
2

リスト内の重複する要素を削除することは、目標を達成するための最良の方法ではありません。代わりに、Comparator(複数の並べ替えメソッドがある場合)を使用するか、MP3FileクラスにComparableを実装させる(1つしかない場合、または明らかに最適なものがある場合)ことを検討してください。

于 2011-05-27T19:59:28.390 に答える