Java/Java
[Java] 중간 연산 - 정렬과 루핑(Looping)
기록하는_사람
2022. 10. 21. 13:12
정렬
📌 정렬 기능을 제공하는 중간 연산 메소드
Stream<T> sorted(Comparator<? super T> comparator)
Stream<T> sorted()
IntStream sorted()
DoubleStream sorted()
LongStream sorted()
📌 Comparable<T>의 compareTo( )
양의 정수 반환 | 음의 정수 반환 | 0 반환 | |
int compareTo(T o) | o가 작으면, | o가 크면, | o와 같으면, |
int compare(T o1, T o2) | o1이 o2보다 크면, | o1이 o2보다 작으면, | o1과 o2가 같으면, |
📄 SortTest.java
package stream2;
import java.util.stream.IntStream;
import java.util.stream.Stream;
public class SortTest {
public static void main(String[] args) {
Stream.of("apple", "banana", "pear")
.sorted()
.forEach(s -> System.out.print(s + " ")); // apple banana pear
System.out.println();
Stream.of("apple", "banana", "pear")
.sorted((s1, s2) -> s1.length() - s2.length())
.forEach(s -> System.out.print(s + " ")); // pear apple banana
System.out.println();
IntStream.of(82, 43, 93, 18, 29, 58)
.sorted()
.forEach(i -> System.out.print(i + " ")); // 18 29 43 58 82 93
System.out.println();
}
}
루핑(Looping)
📌루핑(Looping)
: 스트림을 이루는 모든 데이터 각각을 대상으로 특정 연산을 진행하는 행위.
Stream<T> peek(Consumer<? super T> action)
IntStream peek(IntConsumer action)
DoubleStream peek(DoubleConsumer action)
LongStream peek(LongConsumer action)
📄 LoopingTest.java
package stream2;
import java.util.stream.IntStream;
public class LoopingTest {
public static void main(String[] args) {
// 최종 연산 생략된 스트림 파이프라인.
IntStream.of(1, 2, 3, 4, 5)
.peek(i -> System.out.print(i + " ")); // 1 2 3 4 5
System.out.println();
// 최종 연산 존재하는 스트림 파이프라인.
IntStream.of(1, 2, 3, 4, 5)
.peek(i -> System.out.print(i + " "))
.sum();
System.out.println(); // 1 2 3 4 5
}
}
+ 추가 설명
더보기
- 최종 연산이 생략된 스트림 파이프라인
→ 중간 연산이 진행되지 않음.
- 최종 연산이 존재하는 스트림 파이프라인
→ 중간 연산이 진행됨.