Java
Stram Api를 활용한 정렬
은크
2024. 7. 18. 16:09
Stram Api를 활용한 정렬, 이중 정렬, 오름차순, 내림차순 적용 방법을 알아보자
정렬에 사용할 User 클래스
@Builder
@Getter
@ToString
public class User {
private String name;
private Integer age;
}
정렬에 사용할 Sample User List
List<User> users = Arrays.asList(
User.builder().name("김씨").age(25).build(),
User.builder().name("김씨").age(16).build(),
User.builder().name("김씨").age(33).build(),
User.builder().name("이씨").age(19).build(),
User.builder().name("정씨").age(22).build());
코드 및 결과
/* 이름 오름차순 */
Comparator<User> nameDesc = Comparator.comparing(User::getName);
users.stream().sorted(nameDesc).forEach(System.out::println);
/* 결과 */
User(name=김씨, age=25)
User(name=김씨, age=16)
User(name=김씨, age=33)
User(name=이씨, age=19)
User(name=정씨, age=22)
/* 이름 내림차순 */
Comparator<User> nameAsc = Comparator.comparing(User::getName, Comparator.reverseOrder());
users.stream().sorted(nameAsc).forEach(System.out::println);
/* 결과 */
User(name=정씨, age=22)
User(name=이씨, age=19)
User(name=김씨, age=25)
User(name=김씨, age=16)
User(name=김씨, age=33)
/* 이름 오름차순, 이름 같을 경우 나이 오름차순 */
Comparator<User> nameDescAndAgeDesc = Comparator.comparing(User::getName).thenComparing(User::getAge);
users.stream().sorted(nameDescAndAgeDesc).forEach(System.out::println);
/* 결과 */
User(name=김씨, age=16)
User(name=김씨, age=25)
User(name=김씨, age=33)
User(name=이씨, age=19)
User(name=정씨, age=22)
/* 이름 오름차순, 이름 같을 경우 나이 내림차순 */
Comparator<User> nameDescAndAgeAsc = Comparator.comparing(User::getName).thenComparing(User::getAge, Comparator.reverseOrder());
users.stream().sorted(nameDescAndAgeAsc).forEach(System.out::println);
/* 결과 */
User(name=김씨, age=33)
User(name=김씨, age=25)
User(name=김씨, age=16)
User(name=이씨, age=19)
User(name=정씨, age=22)