프로그래밍 언어/JAVA

[JAVA Stream] map, filter, sorted 사용법 알아보기

s워니얌 2023. 5. 24. 11:48

 

책을 보며 공부하고 있는데 다음과 같은 문장이 나왔다. 

 

vo.getAuthList().stream() .map(auth -> new SimpleGrantedAuthority(auth.getAuth())).collect(Collectors.toList())

 

이는 AuthVO 인스턴스를 GrantedAuthority 객체로 변환하는 과정이다. 여기서 map의 사용법에 의문을 가졌다. 

 


https://wonisdaily.tistory.com/133

 

 

[ch14 Stream] 스트림 생성과 연산, Optional<T>

📑 스트림(Stream) 이란? 지금까지 많은 수의 데이터를 다룰 때, 컬렉션이나 배열에 데이터를 담고 원하는 결과를 얻기 위해 for문과 Iterator를 이용해 코드를 작성해왔다. 그러나 이런 방식으로 작

wonisdaily.tistory.com

 

 

스트림에 대한 기본적인 설명은 위에 링크 참고! 

 

배열에 원소를 가공하는데 있어 map, filter, sorted 등이 있다. 

 

📌 map은 요소들을 특정조건에 해당하는 값으로 변환해 준다.

-> 요소들은 대,소문자 변형, 형변환 등의 작업을 하고 싶을 때 사용이 가능하다. 

 

📌 filter는 요소들을 조건에 따라 걸러내는 작업을 해준다.

-> 길이의 제한, 특정문자포함 등의 작업을 하고 싶을때 사용 가능하다. 

 

📌 sorted는 요소들을 정렬해주는 작업을 해준다.

-> 요소들의 가공이 끝났다면 리턴해줄 결과를 collect를 통해 만들어준다. 

 

 

 

 

📑 map()

 

package ex;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.Collectors;

public class StreamEx {
	
	public static void main(String[] args) {
		
		ArrayList<String> list = new ArrayList<>(Arrays.asList("Apple", "Banana", "Melon", "Grape","Strawbery"));
		System.out.println(list); // [APPLE, BANANA, MELON, GRAPE, STRAWBERY]
		
		System.out.println(list.stream().map(s->s.toUpperCase()).collect(Collectors.toList()));
       	 // [APPLE, BANANA, MELON, GRAPE, STRAWBERY]
		list.stream().map(String::toUpperCase).forEach(t-> System.out.println(t));
        
		
	}
	

}

 

 

 

리스트의 요소들을 대문자로 변경해주는 코드이다. 요소들을 대문자로 가공했다면 collect를 이용해 결과를 리턴받을 수 있고, forEach를 이용해 바로 출력할 수 있다. 

 

 

 

📑 filter

 

filter는 요소를 특정 기준으로 걸러낼 수 있다. 

 

System.out.println(list.stream().filter(s->s.length()>5).collect(Collectors.toList())); //[Banana, Strawbery]

 

 

📑 sorted

 

리스트의 요소를 정렬한다.

 

System.out.println(list.stream().sorted().collect(Collectors.toList())); // [Apple, Banana, Grape, Melon, Strawbery]

 

반응형