개발 지식, 슀크립트/Java 문법

Java의 Stream APIμ—μ„œ μ‚¬μš©λ˜λŠ” map λ©”μ„œλ“œμ™€ λ©”μ„œλ“œ μ°Έμ‘°(method references)

μ‹œνλ¦¬ν‹°μ§€ν˜Έ 2024. 2. 6. 14:42

map λ©”μ„œλ“œμ™€ λ©”μ„œλ“œ μ°Έμ‘°

 

이 것을 μ“°λŠ” λ°©μ‹μ—λŠ” 두 κ°€μ§€ 방식이 μžˆλŠ”λ° 

 

ν•˜λ‚˜λŠ” λ©”μ„œλ“œλ₯Ό μ°Έμ‘°ν•˜λŠ” 것이고, 또 λ‹€λ₯Έ ν•˜λ‚˜λŠ” μƒμ„±μžλ₯Ό μ°Έμ‘°ν•˜λŠ” 것이닀.

 

1. μƒμ„±μžλ₯Ό μ°Έμ‘°ν•˜λŠ” 방식

 List<ArticleResponse> articles = blogService.findAll()
                .stream()
                .map(ArticleResponse::new)
                .toList();

 

μ΄λ ‡κ²Œ ν•˜λ©΄ ArticleResponse 클래슀의 μƒμ„±μžμ— blogServie.findAll()둜 찾은 κ°’λ“€ 각각을 νŒŒλΌλ―Έν„° κ°’μœΌλ‘œ λ„£μ–΄ ArticleResponse νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•œ λ’€ toList()λ₯Ό 톡해 Listλ₯Ό λ§Œλ“€μ–΄μ€€λ‹€.

 

*μ΄λ•Œ μ˜€λ²„λ‘œλ“œλ‘œ μ—¬λŸ¬ μƒμ„±μžκ°€ μžˆλ‹€λ©΄ ArticleResponse::newλŠ” μŠ€νŠΈλ¦Όμ„ 톡해 μ „λ‹¬λ˜λŠ” 각 μš”μ†Œμ˜ νƒ€μž…κ³Ό μΌμΉ˜ν•˜λŠ” μƒμ„±μžλ₯Ό μ°Ύμ•„ ν˜ΈμΆœν•©λ‹ˆλ‹€.

.map(article -> new ArticleResponse(article))

 

 

 

2. λ©”μ„œλ“œλ₯Ό μ°Έμ‘°ν•˜λŠ” 방식

List<String> numbers = Arrays.asList("1", "2", "3");
List<Integer> intNumbers = numbers.stream()
                                  .map(Integer::parseInt) // String을 Integer둜 λ³€ν™˜
                                  .collect(Collectors.toList());

 

numbers List의 각각 성뢄을 Integer ν΄λž˜μŠ€μ— μžˆλŠ” parseInt λ©”μ„œλ“œ μ‚¬μš©ν•˜μ—¬ λ³€ν™˜ ν•œλ‹€. κ·Έ λ‹€μŒ 

.collect(Collector.toList()) 둜 λ³€ν™˜ν•œ νƒ€μž…μ˜ 리슀트둜 λ§Œλ“€μ–΄ μ€€λ‹€.

 

*.collect(Collector.toList())  --> ν˜„μž¬λŠ” stream()이 toList() λ©”μ„œλ“œλ„ μ‚¬μš©ν•  수 μžˆλ‹€. λ”°λΌμ„œ κ·Έλƒ₯ μœ„μ˜ μ½”λ“œμ²˜λŸΌ toList() 만 써도 λœλ‹€.