java 8 의 컬렉션(Map, Set, List…)을 편리하게 순회하는 샘플코드 (forEach, replaceAll, filter, map…)

By | 3월 25, 2021
/*
 * 기본적인 루프
 *  - map.forEach()
 */
map.forEach((k, v) -> System.out.println("key: " + k + ", value: " + v));
map.forEach((k,v) -> {
    System.out.println("key: " + k + ", value: " + v)
});
map.entrySet().forEach((e) -> System.out.println("key: " + e.getKey() + ", value: " + e.getValue()));
map.keySet().forEach((k) -> System.out.println("key: " + k));
map.values().forEach((v) -> System.out.println("value: " + v));

/*
 * Map내 각 요소의 value를 가공할 때 사용
 *  - map.replaceAll()
 */
Map<String, String> map = map.replaceAll((k,v) -> StringUtil.trim(v));

/*
 * 기존 Map의 entry 중 조건에 맞지 않는 것을 필터링하여 새로운 Map을 리턴 받는다.
 *   - map.filter().collect()
 */
Map<String, Integer> map = map.entrySet().stream()
    .filter(e -> {
        boolean removed = e.getValue() > 10;
        if(removed) {
            log.debug("## 필터링시 제거된 레코드: {}", e);
        }
        return (! removed);
    })
    .collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue()));

/*
 * Set 의 요소를 가공하여 다른 형태의 요소들을 가진 Set을 리턴한다.
 *  - set.stream().map().collect()
 */
Set<String> set = set.stream()
    .map(el -> {
        String[] arr = el.split('@');
        return arr[0];
    })
    .collect(Collectors.toSet());

/*
 * List<Map<String, Object>> 를 가공하여 List<String> 으로 리턴
 *  - list.stream().map().collect()
 */ 
List<Map<String, Object>> fList = mypageService.findFavoriteList(params); 
List<String> favorIsuCds = fList.stream().map(m -> StringUtil.trim(m.get("isu_cd"))).collect(Collectors.toList()); 
 
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments