[解決済み] カスタムオブジェクトのArrayListをプロパティでソートする
質問
コンパレータを使ったArrayListのソートについて読みましたが、すべての例で、コンパレータを使わずに
compareTo
これは、ある調査によると、文字列のためのメソッドです。
カスタムオブジェクトのArrayListを、そのプロパティの1つであるDateオブジェクトでソートしたいと思いました。
(
getStartDay()
). 通常、私はそれらを
item1.getStartDate().before(item2.getStartDate())
というようなことを書けないかと考えていました。
public class CustomComparator {
public boolean compare(Object object1, Object object2) {
return object1.getStartDate().before(object2.getStartDate());
}
}
public class RandomName {
...
Collections.sort(Database.arrayList, new CustomComparator);
...
}
解決方法は?
以来
Date
を実装しています。
Comparable
を持つ。
compareTo
メソッドと同じように
String
が行います。
つまり、あなたのカスタム
Comparator
は次のようになります。
public class CustomComparator implements Comparator<MyObject> {
@Override
public int compare(MyObject o1, MyObject o2) {
return o1.getStartDate().compareTo(o2.getStartDate());
}
}
は
compare()
メソッドは
int
を直接返すことはできません。
boolean
のように、とにかく計画していたのです。
並べ替えのコードは、あなたが書いたようなものになります。
Collections.sort(Database.arrayList, new CustomComparator());
コンパレータを再利用する必要がない場合は、インラインの無名クラスとして記述することで、これらすべてを少し短く記述することができます。
Collections.sort(Database.arrayList, new Comparator<MyObject>() {
@Override
public int compare(MyObject o1, MyObject o2) {
return o1.getStartDate().compareTo(o2.getStartDate());
}
});
以来 ジャバ・エイト
これで、最後の例を短く書くことができます。
ラムダ式
に対して
Comparator
:
Collections.sort(Database.arrayList,
(o1, o2) -> o1.getStartDate().compareTo(o2.getStartDate()));
そして
List
には
sort(Comparator)
メソッドがあるので、これをさらに短くすることができます。
Database.arrayList.sort((o1, o2) -> o1.getStartDate().compareTo(o2.getStartDate()));
このようなイディオムはよくあることなので
組み込みのメソッド
を生成することができます。
Comparator
を持つクラスに対して
Comparable
キーになります。
Database.arrayList.sort(Comparator.comparing(MyObject::getStartDate));
これらはすべて等価な形式です。
関連
-
プロローグでのコンテンツは禁止されています
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] ArrayListの初期化を1行で行う。
-
[解決済み] 辞書のリストを辞書の値でソートするにはどうしたらいいですか?
-
[解決済み] List<T>をオブジェクトのプロパティでソートする方法
-
[解決済み] カスタムオブジェクトを含むNSMutableArrayをソートするにはどうすればよいですか?
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
-
[解決済み】オブジェクトの配列をプロパティ値でソートする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Java Exceptionが発生しました エラー解決
-
アクセス制限です。タイプ 'Application' は API ではありません。
-
コンストラクタの呼び出しは、コンストラクタのエラー理解の最初のステートメントである必要があります。
-
リソースの読み込みに失敗しました。サーバーはステータス500(内部サーバーエラー)で応答しました。
-
spring aop アドバイスからの Null 戻り値が、サマリーのプリミティブ戻り値と一致しない。
-
javaでよく使われる英単語
-
Google Chromeのエラー「Not allowed to load local resource」の解決策について
-
ローカルリソースのロードが許可されていない場合の解決策
-
Maven Pluginの実行がライフサイクル設定の対象外であるエラーの解決
-
[解決済み】JavaでArrayListをソートする方法【重複あり