Java 8은 스트림을 더 잘 정렬하는 데 도움이되는 다양한 유틸리티 API 메소드를 제공합니다.
목록이 Integers (또는 Double, Long, String 등) 목록 인 경우 java에서 제공하는 기본 비교기로 목록을 정렬 할 수 있습니다.
List<Integer> integerList = Arrays.asList(1, 4, 3, 4, 5);
즉시 비교기 만들기 :
integerList.stream().sorted((i1, i2) -> i1.compareTo(i2)).forEach(System.out::println);
sorted ()에 인수가 전달되지 않은 경우 Java 8에서 제공하는 기본 비교기 사용 :
integerList.stream().sorted().forEach(System.out::println);
동일한 목록을 역순으로 정렬하려면 :
integerList.stream().sorted(Comparator.reverseOrder()).forEach(System.out::println);
목록이 사용자 정의 개체 목록 인 경우 :
List<Person> personList = Arrays.asList(new Person(1000, "First", 25, 30000),
new Person(2000, "Second", 30, 45000),
new Person(3000, "Third", 35, 25000));
즉시 비교기 만들기 :
personList.stream().sorted((p1, p2) -> ((Long)p1.getPersonId()).compareTo(p2.getPersonId()))
.forEach(person -> System.out.println(person.getName()));
Comparator.comparingLong () 메서드를 사용하여 (우리는 compareDouble (), compareInt () 메서드도 있습니다) :
personList.stream().sorted(Comparator.comparingLong(Person::getPersonId)).forEach(person -> System.out.println(person.getName()));
Comparator.comparing () 메서드 사용 (제공된 getter 메서드를 기반으로 비교하는 Generic 메서드) :
personList.stream().sorted(Comparator.comparing(Person::getPersonId)).forEach(person -> System.out.println(person.getName()));
thenComparing () 메서드를 사용하여 연결을 수행 할 수도 있습니다.
personList.stream().sorted(Comparator.comparing(Person::getPersonId).thenComparing(Person::getAge)).forEach(person -> System.out.println(person.getName()));
사람 클래스
public class Person {
private long personId;
private String name;
private int age;
private double salary;
public long getPersonId() {
return personId;
}
public void setPersonId(long personId) {
this.personId = personId;
}
public Person(long personId, String name, int age, double salary) {
this.personId = personId;
this.name = name;
this.age = age;
this.salary = salary;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
}
list.sort(Comparator.comparing(o -> o.getItem().getValue()));
나에게 처음이었다. 큰!