1. ホーム
  2. java

[解決済み] Javaコレクションのソート

2023-05-24 22:27:52

質問

Javaコレクションを持っています。

Collection<CustomObject> list = new ArrayList<CustomObject>();

CustomObject には id フィールドを持つので、リストを表示する前に、このコレクションをその id .

そのような方法はありますか?

どのように解決するのですか?

を使用します。 コンパレータ :

List<CustomObject> list = new ArrayList<CustomObject>();
Comparator<CustomObject> comparator = new Comparator<CustomObject>() {
    @Override
    public int compare(CustomObject left, CustomObject right) {
        return left.getId() - right.getId(); // use your logic
    }
};

Collections.sort(list, comparator); // use the comparator as much as u want
System.out.println(list);

さらに、もし CustomObject が実装されている場合 Comparable を実装した場合、単に Collections.sort(list)

JDK 8 では、構文はよりシンプルになります。

List<CustomObject> list = getCustomObjectList();
Collections.sort(list, (left, right) -> left.getId() - right.getId());
System.out.println(list);

もっとシンプルに

List<CustomObject> list = getCustomObjectList();
list.sort((left, right) -> left.getId() - right.getId());
System.out.println(list);

最もシンプル

List<CustomObject> list = getCustomObjectList();
list.sort(Comparator.comparing(CustomObject::getId));
System.out.println(list);

もちろん、初期のコードはJDK 8でも使用できます。