Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Developer N

[Java8] Stream()을 이용하여 List<Map<String, Object> to List<String> 자료형 변환 본문

STUDY/JAVA | SPRING

[Java8] Stream()을 이용하여 List<Map<String, Object> to List<String> 자료형 변환

nnh 2023. 4. 26. 23:07
728x90

List<Map<String, Object> 에서 특정 Key 값의 value들을 따로 뽑아 List로 저장하고자 할 때
반복문을 사용하지 않고 stream()을 이용하여 한줄로 간단하게 구현할 수 있다.
 
 
 
 

List<Map<String, Object>> mapList = testService.getMapList(testDto);

List<String> valueList = mapList.stream().filter(x -> x.containsKey("원하는 Key값").map(m -> m.get("원하는 Key값").toString()).collect(Collectors.toList());

 
 
mapList를 stream 반복자로 필요한 값들만 List<String>에 담는 방법이다.
 
 
 
 

stream이란 Iterator와 비슷한 역할을 하지만 람다식으로 요소 처리 코드를 제공해 코드가 좀 더 간결하다는 장점이 있다.

또한 내부반복자를 사용하기 때문에 병렬처리가 쉽고 실행이 더 빠르다.
 
 
 

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

filter() 안의 조건이 참이라면 true 거짓이라면 falst로, true일 경우 다음으로 계속 진행된다.
여기서는 containsKey()를 사용하여 mapList에서 해당 키값이 존재하는지를 알아낸 다음, 존재할 경우 마저 코드가 진행되었다.
 
 
 

containsKey(key값)

mapList 안에 담긴 map 안에 해당 key가 존재하면 true, 없으면 false를 반환한다.
 
 
 

map은 입력 컬렉션을 출력 컬렉션으로 매핑하거나 변경할 때 사용한다.

즉, get으로 입력한 key값이 value값을 String화하여 뽑아주었다.
 
 
 

collect는 엘리먼트를 하나로 리턴한다.

여기서는 Collectors 클래스를 사용하여 List로 리턴해주었다.
 
 
 

Collectors 클래스는 다양한 기능의 Collector를 구현한 클래스를 제공한다.

변환할 수 있는 mapping, toList, toSet, toMap, toCollection 등의 메소드를 제공한다.
그 외에도 통계, 문자열 결합, 리듀싱, 그룹화와 분활 등 여러 메소드를 제공한다.
 
 
 
 
 
 


 
 
반복문을 사용해 세네줄 길어지던 코드를 한줄로 간단하게 사용할 수 있어서 편했다.
stream()을 잘 할용할 수 있도록 여러가지 메소드를 사용해봐야겠다.
 
 
 
 
 
 
 

728x90
Comments