JAVA/Java 일반
java stream을 이용한 정렬
달사자!
2022. 1. 10. 14:37
git 링크
- https://github.com/oshnew/study-modern-java/blob/master/src/main/java/stream/StreamSorted.java
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
/**
* 내부 개발자 교육을 위한 간단한 java Stream 샘플 소스
* - 정렬
*
* @author
*/
public class StreamSorted {
public static void main(String[] args) {
//테스트 데이터 셋팅
List<StatVO> statList = Arrays.asList(new StatVO("a", 3), new StatVO("b_a", 2), new StatVO("b_c", 1), new StatVO("d", 7));
System.out.println("=== cnt 오름차순 정렬");
statList.stream().sorted(Comparator.comparing(StatVO::getCnt)).forEach(System.out::println);
System.out.println("\n\n");
System.out.println("=== cnt 내림차순 정렬");
statList.stream().sorted(Comparator.comparing(StatVO::getCnt).reversed()).forEach(System.out::println);
System.out.println("\n\n");
System.out.println("=== stat name 오름차순 후에 cnt 내림차순정렬"); //다수 필드 정렬
statList.stream().sorted(Comparator.comparing(StatVO::getStat).thenComparing(StatVO::getCnt).reversed()).forEach(System.out::println);
System.out.println("\n\n");
List<StatVO> descList = statList.stream().sorted(Comparator.comparing(StatVO::getCnt)).collect(Collectors.toList());
System.out.println("=== 오름차순 정렬하여 collect한 리스트");
descList.stream().forEach(System.out::println);
}
@Data
@AllArgsConstructor
public static class StatVO {
private String stat;
private int cnt;
}
}