Javaはオブジェクトのフィールドに従って並べ替えられます。
4357 ワード
ちょうど最近のプロジェクト開発では、Listに保存されているオブジェクトをそのフィールドに従って並べ替える必要があるので、まとめてみましょう。コードの運搬員としても、その原理を理解する必要があります。
簡単なPersonクラスをください。
いずれにしても、私はラダの書き方が好きです。
簡単なPersonクラスをください。
public class Person {
private Long id;
private String name;
public Person(Long id, String name) {
this.id = id;
this.name = name;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
今の需要は名前のピンインの頭文字によって並べ替えて、コードを見て実現します。 @Test
public void testSort() {
Person p1 = new Person(1l, " ");
Person p2 = new Person(3l, " ");
Person p3 = new Person(2l, " ");
Person p4 = new Person(4l, " ");
Person p5 = new Person(5l, " ");
List persons = Arrays.asList(p1, p2, p3, p4, p5);
Collections.sort(persons, new Comparator() {
@Override
public int compare(Person o1, Person o2) {
Collator collator = Collator.getInstance(Locale.CHINA);
return collator.compare(o1.getName(), o2.getName());
}
});
}
Collections.sort方法を使って、Comprator実現類を伝え、比較対象フィールドでcompre方法を実現します。いずれにしても、私はラダの書き方が好きです。
Collections.sort(persons, (o1, o2) -> {
Collator collator = Collator.getInstance(Locale.CHINA);
return collator.compare(o1.getName(), o2.getName());
});
// another way
persons.sort((p1, p2) -> p1.getName.compareTo(p2.getName));
Javaの対象順位はいずれもComparable
Comparator
という二つのインターフェースと関連しています。ネット上ではすでに多くの文章が記述されています。添付の文章を見に行きましょう。:http://www.journaldev.com/780/comparable-and-comparator-in-java-example http://www.importnew.com/15259.html https://sanaulla.info/2013/03/11/using-lambda-expression-to-sort-a-list-in-java-8-using-netbeans-lambda-support/