Mục lục
Giả sử chúng ta có một class Person chứa các thông tin: name, age, address, sex. Chúng ta dùng LinkedList để lưu trữ các Person này.
// File Person.java
public class Person {
private String name;
private String address;
private int age;
public Person(String name, String address, int age) {
this.name = name;
this.address = address;
this.age = age;
}
public String getName() {
return name;
}
public String getAddress() {
return address;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", address='" + address + '\'' +
", age=" + age +
'}';
}
}
Yêu cầu 1: xuất ra danh sách các Person sắp xếp tăng dần theo name.
import java_regex.Person;
import java.util.LinkedList;
public class Main {
public static void main(String args[]) {
LinkedList<Person> linkedList = new LinkedList<>();
linkedList.add(new Person("a", "hcm", 19));
linkedList.add(new Person("f", "hcm", 21));
linkedList.add(new Person("k", "hcm", 23));
linkedList.add(new Person("d", "hcm", 21));
linkedList.add(new Person("s", "hcm", 20));
linkedList.sort((o1, o2) -> o1.getName().compareTo(o2.getName()));
linkedList.forEach(person -> System.out.println(person.toString()));
}
}
Hoặc sử dụng Comparator
linkedList.sort(Comparator.comparing(Person::getName));
Output:
Person{name=’a’, address=’hcm’, age=19}
Person{name=’d’, address=’hcm’, age=21}
Person{name=’f’, address=’hcm’, age=21}
Person{name=’k’, address=’hcm’, age=23}
Person{name=’s’, address=’hcm’, age=20}
Yêu cầu 2: xuất ra danh sách các Person sắp xếp tăng dần theo name, nếu cùng name thì sắp xếp theo age.
import java_regex.Person;
import java.util.Comparator;
import java.util.LinkedList;
public class Main {
public static void main(String args[]) {
LinkedList<Person> linkedList = new LinkedList<>();
linkedList.add(new Person("a", "hcm", 19));
linkedList.add(new Person("f", "hcm", 21));
linkedList.add(new Person("k", "hcm", 23));
linkedList.add(new Person("a", "hcm", 21));
linkedList.add(new Person("s", "hcm", 20));
linkedList.sort(Comparator.comparing(o ->( (Person) o).getName())
.thenComparing(o -> ((Person) o).getAge()));
linkedList.forEach(person -> System.out.println(person.toString()));
}
}
Output:
Person{name=’a’, address=’hcm’, age=19}
Person{name=’a’, address=’hcm’, age=21}
Person{name=’f’, address=’hcm’, age=21}
Person{name=’k’, address=’hcm’, age=23}
Person{name=’s’, address=’hcm’, age=20}