예를 들어
List<Map<String, Object>> testList = (List<Map<String, Object>>) result.get("data");
[
{
no=1,
"nm=이xx",
"sex=M",
mobileNo=01000000000,
"email=test01@co.kr"
},
{
no=2,
"nm=박xx",
"sex=M",
mobileNo=01000000001,
"email=test02@co.kr"
},
]
라는 List가 있다.
for(Map<String, Object> testMap :testList) {
System.out.println("@@@@@@@@@@@@@@@@@@"+testMap);
// {no=1,"nm=이xx","sex=M",mobileNo=01000000000,"email=test01@co.kr"}
// {no=2,"nm=박xx","sex=M",mobileNo=01000000001,"email=test02@co.kr"}
System.out.println(testMap.get("email"));
// test01@co.kr
// test02@co.kr
}
이렇게 for문으로 가능한 부분을 stream으로 바꾼다면
List<String> emailList = testList.stream()
.filter(d -> "M".equals(d.get("sex")))
.map(d -> (String) d.get("email"))
.collect(Collectors.toList());
System.out.println(emailList);
//[test01@co.kr, test02@co.kr]
emailList.forEach(email -> System.out.println("Email: " + email));
// Email: test01@co.kr
// Email: test02@co.kr
- testList의 각 맵에서 "sex"가 "M"인 것을 필터링
- map을 사용하여 각 데이터에서 "email" 값을 추출
- collect 메서드를 사용하여 List<String>으로 수집
- forEach를 사용하여 출력