상세 컨텐츠

본문 제목

[Collection, Map, Lambda] merge : 함수형 인터페이스를 파라미터로 가지는 컬렉션 메소드

Java

by kwanghyup 2020. 6. 19. 20:50

본문

import java.util.HashMap;
import java.util.Map;
import java.util.function.BiFunction;

public class MergeTest {
    /*
        merge( key, value , BiFunction<T, U, R> )
        @Param1 : 메소드 작업의 수행 대상이 되는 map의 key
        @Param2 : map의 value와 같은 타입의 파라미터 전달
        @Param3 : R apply(T t, U u) 구현
            T : 현재 map의 value;
            U : @param2에서 전달 받은 value
    */

    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();
        map.put("lee",22);
        map.put("lim",32);
        map.put("kim",34);
        map.put("park",44);

        map.merge("lee", 29, new BiFunction<Integer, Integer, Integer>() {
            @Override
            public Integer apply(Integer value1, Integer value2) {
                System.out.println(value1); // 현재 map의 value : 22
                System.out.println(value2); // merger의 2번 파라미터 : 29
                return value1+value2; // <"lee", 51 > 맵에 저장되다.
            }
        });

        //람다
        // (현재 맵의 값, merger에서 전달받은 값 ) -> { ... }
        map.merge("park",30,(v1,v2)->v1*v2);

        map.forEach((k,v)-> System.out.println(k +" "+v));
    }
}

관련글 더보기

댓글 영역