如何使用 Java 中的 Comparator 介面按名稱對列表進行排序?
Comparator 介面可以用於對 使用者自定義 類的物件進行排序。它可以比較兩個不同類的物件。我們可以 對一個物件的列表進行排序,對於此列表,我們不能修改該物件的原始碼以實現Comparable 介面。 lambda 表示式 不能單獨執行,並且用於實現functional interface中宣告的方法。
在下面的示例中,我們需要使用Comparator 介面和Stream API 在lambda 表示式的幫助下按名稱對一個列表進行排序。
示例
import java.util.*; import java.util.function.*; import java.util.stream.*; public class ListSortByNameTest { public static void main(String[] args) { List<Person> arrayList = new ArrayList<Person>(); Person p = new Person(); p.setName("Adithya"); p.setAge(20); arrayList.add(p); Person p1 = new Person(); p1.setName("Jai"); p1.setAge(25); arrayList.add(p1); Person p2 = new Person(); p2.setName("Surya"); p2.setAge(33); arrayList.add(p2); Person p3 = new Person(); p3.setName("Ravi"); p3.setAge(35); arrayList.add(p3); Stream<Person> stream = arrayList.stream(); stream.forEach(x -> System.out.println("Name: [" + x.getName()+"] Age: ["+x.getAge()+"]")); Comparator<Stream> byPersonName = (Person p4, Person p5) -> p4.getName().compareTo(p5.getName()); Stream<Person> sorted = arrayList.stream().sorted(byPersonName); sorted.forEach(e -> System.out.println("Sorted Name: [" + e.getName()+"] Age: ["+e.getAge()+"]")); } } // Person class class Person { public String name; public int age; public String getName() { return name; } public int getAge() { return age; } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } }
輸出
Name: [Adithya] Age: [20] Name: [Jai] Age: [25] Name: [Surya] Age: [33] Name: [Ravi] Age: [35] sorted Name: [Adithya] Age: [20] sorted Name: [Jai] Age: [25] sorted Name: [Ravi] Age: [35] sorted Name: [Surya] Age: [33]
廣告