sort()
sort는 Stream을 정렬해주는 메소드입니다.
매개변수가 없는 것과 Comparator를 매개변수로 받는 것 두 가지가 있습니다.
List<Integer> list = new ArrayList<>();
list.add(12);
list.add(83);
list.add(35);
list.add(7);
list.add(90);
list.stream()
.sorted()
.forEach(n -> System.out.print(n + " "));
sort()를 사용하면 스트림의 요소들을 순서대로 정렬됩니다.
숫자면 오름차순으로, 문자열이면 사전순으로 정렬합니다.
정렬 기준을 지정해줄수도 있습니다.
List<String> list = new ArrayList<>();
list.add("eee");
list.add("ggg");
list.add("bbb");
list.add("aaa");
list.add("ooo");
list.stream()
.sorted(String.CASE_INSENSITIVE_ORDER)
.forEach(s -> System.out.print(s + " "));
String.CASE_INSENSITIVE_ORDER는 String 클래스에 있는, 사전 순서대로 정렬하도록 정의된 Comparator입니다.
Comparator를 사용하면 정렬 기준을 원하는대로 변경할 수 있습니다.
min
매개변수로 들어온 Comparator를 기준으로 하여, 가장 작은 요소를 반환합니다.
List<String> list = new ArrayList<>();
list.add("eee");
list.add("ggg");
list.add("bbb");
list.add("aaa");
list.add("ooo");
Optional<String> min = list.stream()
.min(String.CASE_INSENSITIVE_ORDER);
System.out.println(min.get());
문자열 사전순으로 정렬했을 때 가장 앞에 오는 aaa가 반환되었습니다.
sort와 마찬가지로, Comparator를 사용해서 최소값 판별 기준을 자유롭게 지정할 수 있습니다.
max
매개변수로 들어온 Comparator를 기준으로 하여, 가장 큰 요소를 반환합니다.
List<String> list = new ArrayList<>();
list.add("a");
list.add("aa");
list.add("aaa");
list.add("aaaa");
list.add("aaaaa");
Optional<String> max = list.stream().max((o1, o2) -> Integer.compare(o1.length(), o2.length()));
System.out.println(max.get());
문자열 리스트에서 길이가 가장 긴 요소가 반환되었습니다.
Comparator를 생성해서 정렬하고 싶다면 위와 같이 사용하면 됩니다.