質問:
オブジェクトのリスト (例: 人) を操作する場合、異なる基準で柔軟に並べ替えるにはどうすればよいですか?プロパティ(例:名前、年齢、 country)?
回答:
Comparable インターフェイスでは単一のプロパティによる並べ替えが可能ですが、より汎用性の高いアプローチは、Collections.sort メソッドでカスタム コンパレーターを使用することです。 Person クラスを並べ替える例:
public class FlexiblePersonComparator implements Comparator<Person> { public enum Order { Name, Age, Country } private Order sortingBy = Order.Name; @Override public int compare(Person person1, Person person2) { switch (sortingBy) { case Name: return person1.name.compareTo(person2.name); case Age: return person1.age.compareTo(person2.age); case Country: return person1.country.compareTo(person2.country); } throw new RuntimeException("Practically unreachable code, can't be thrown"); } public void setSortingBy(Order sortBy) { this.sortingBy = sortBy; } }
コンパレータの使用:
public void sortPersonsBy(FlexiblePersonComparator.Order sortingBy) { List<Person> persons = this.persons; // Useless line for clarification FlexiblePersonComparator comparator = new FlexiblePersonComparator(); comparator.setSortingBy(sortingBy); Collections.sort(persons, comparator); // Sorting the list }
カスタム コンパレータを使用すると、オブジェクトのコレクションを任意のプロパティで柔軟に並べ替えることができます。複雑なデータ構造をソートするための便利で汎用性の高いソリューションです。
以上がオブジェクトのリストをさまざまなプロパティごとに柔軟に並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。