以下で説明する状況に合うようにカスタムオブジェクトの配列リストを並べ替える方法があるかどうか疑問に思っていますか?カスタムコンパレータを作成する必要があると思います。
次のようなオブジェクトクラスがあるとします。
public class Person {
private String status; //options: Online, Away, Offline
private String name; //Person's name
private Date date; //Last signed on
//basic constructor
public Person() {
//set default values
}
//constructor to set all variables
public Person(String s, String n, Date d) {
status = s;
name = n;
date = d;
}
//setters & getters for each of the fields
}
名前と日付に基づく並べ替えはかなり簡単です。しかし、ステータスに基づいてどのように並べ替えるのか疑問に思っていますか?その人が現在オンラインであるかどうか、また誰がオフラインであるかに基づいて配列を並べ替えることができるようにしたいと思います。私は誰が不在であるかについてあまり心配していません。
上記のクラスは単なるサンプルクラスです。私の実際のクラスでは、ステータスに基づいてJLabelにアイコンが設定されています。setText()
残りは未使用のままです。ラベルを0、1、および2の値に設定し、一般的な整数コンパレータを使用する可能性を考えましたが、それが推奨される方法であるかどうかはわかりませんでした。
確かに私はここで明白な解決策を見逃しているので、おそらくコメントやリンクが必要な情報を提供することができます。私はここSOにたくさんの「SortArraylist」スレッドがあることを知っています、そして私はそれらの多くを閲覧しました。それらのほとんどは、文字列をアルファベット順または整数でソートしているだけです。