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));
}
}
댓글 영역