국비지원/백엔드

221216 Stream 과 Map Collection

선SEON 2022. 12. 16. 09:42

스트림(Stream)

: Iterator와 비슷한 역할을 하는 반복자

 

<스트림의 특징>

1) 람다식으로 요소 처리 코드 제공

2) 내부 반복자를 사용하여 병렬 처리가 쉽다

3) 중간 처리와 최종 처리를 할 수 있다

package chap16;

import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Stream;

public class StreamEx {

	public static void main(String[] args) {
		List<String> list = Arrays.asList("홍길동", "신용권", "김자바");
				
		//Stream 이용
		Stream<String> st = list.stream();
		st.forEach(n -> System.out.println(n)); // 반복문처럼 활용됨
		
		System.out.println();
		
		list.stream().forEach(a -> System.out.println(a));
		
		System.out.println();
		
		//Iterator 반복자 이용
		Iterator<String> it= list.iterator(); 
		while(it.hasNext()) { // 자료가 있는지 없는지 체크
			String name = it.next();
			System.out.println(name);
		}
	}
}

* forEach() 메소드는 Consumer 함수적 인터페이스 타입의 매개값을 가지므로 컬렉션의 요소를 소비할 코드를 람다식으로 기술 가능

void forEach(Consumer<T> action)

<스트림의 종류>

1) 컬렉션으로부터 스트림 얻기

2) 배열로부터

3) 숫자 범위로부터

4) 파일로부터

5) 디렉토리로부터

 


Map 컬렉션

: 키(key)와 값(value)으로 구성된 Entry 객체를 저장하는 구조를 가지고 있다.

-> 여기서 키와 값은 모두 객체, 키는 중복 저장 불가 / 값은 중복 저장 가능