[JAVA Stream] map, filter, sorted 사용법 알아보기
책을 보며 공부하고 있는데 다음과 같은 문장이 나왔다.
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]