[java] sorted() 메서드를 이용한 스트림 정렬 방법

sorted() 메서드는 Stream 객체의 요소를 기본 정렬 순서 또는 Comparator를 사용하여 정렬하는 데 사용됩니다. 기본 정렬 순서는 Comparable 인터페이스를 구현한 객체에서 사용할 수 있습니다. 하지만 사용자 정의 객체를 정렬하려면 Comparator 객체를 사용해야 합니다.

아래는 sorted() 메서드를 사용한 스트림 정렬의 예시입니다.

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class StreamSortingExample {
    public static void main(String[] args) {
        List<String> fruits = new ArrayList<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Cranberry");
        fruits.add("Durian");

        // 알파벳순으로 정렬된 스트림 생성
        List<String> sortedFruits = fruits.stream()
                .sorted()
                .collect(Collectors.toList());

        System.out.println("알파벳순으로 정렬된 과일: " + sortedFruits);

        // 길이별로 정렬된 스트림 생성
        Comparator<String> lengthComparator = Comparator.comparing(String::length);
        List<String> sortedFruitsByLength = fruits.stream()
                .sorted(lengthComparator)
                .collect(Collectors.toList());

        System.out.println("길이별로 정렬된 과일: " + sortedFruitsByLength);
    }
}

위의 예시 코드에서는 List인 fruits를 스트림으로 변환한 후 sorted() 메서드를 호출하여 정렬된 스트림을 생성합니다. 첫 번째 예시에서는 알파벳순으로 정렬된 스트림을 생성하고, 두 번째 예시에서는 길이별로 정렬된 스트림을 생성합니다.

sorted() 메서드는 원본 스트림을 변경하는 것이 아니라 정렬된 새로운 스트림을 생성합니다. 따라서 원본 스트림이 변경되지 않는 특징을 가지고 있습니다.

스트림을 정렬하는 과정에서 Comparator 객체를 사용할 수도 있습니다. Comparator를 사용하면 사용자 정의 객체를 기준에 맞게 정렬할 수 있습니다. 위의 예시 코드에서는 길이를 기준으로 정렬하기 위해 Comparator를 사용했습니다.

sorted() 메서드를 사용하여 스트림을 정렬하는 방법에 대해 알아보았습니다. Stream API를 적극적으로 활용하면 데이터 처리와 조작을 간결하게 할 수 있습니다.