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 
	}

}

+ 추가 설명

더보기

- 최종 연산이 생략된 스트림 파이프라인

  → 중간 연산이 진행되지 않음. 

 

- 최종 연산이 존재하는 스트림 파이프라인

  → 중간 연산이 진행됨.