상세 컨텐츠

본문 제목

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

Java

by kwanghyup 2020. 6. 19. 20:27

본문

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

public class ComputIfPresentTest {
    /*
        computeIfPresent( key, BiFunction<T, U, R>)
        @Param1 : map의 key
        @Param2
            구현 메소드 : R apply(T t, U u)
            U : 현재 map의 key
            U : 현재 map의 value
            R : 메소드 수행 후 map의 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);


        // 지정된 key가 존재할 때만 작업을 수행한다.
        map.computeIfPresent("kim", new BiFunction<String, Integer, Integer>() {
            @Override
            public Integer apply(String key, Integer value) {
                System.out.println("1번 파라미터 확인 : "  + key); // 현재 map의 key
                System.out.println("2번 파라미터 확인 : "  + value); // 현재 map의 value
                return value + key.length(); 
                // 메소드가 수행되고나면 map의 value는 37이 된다.
            }
        });

        //람다
        map.computeIfPresent("park", (k,v)-> 49);

        // map에 존재하지 않는 key에 대하여 수행할 수 없다.
        map.computeIfPresent("hong",(k,v)-> 49);

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

    }

}

관련글 더보기

댓글 영역