/*
 * 기본적인 루프
 */
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<String, String> map = map.replaceAll((k,v) -> StringUtil.trim(v));
 

/*
 * 기존 Map의 entry 중 조건에 맞지 않는 것을 필터링하여 새로운 Map을 리턴 받는다.
 */
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<String> set = set.stream()
	.map(el -> {
		String[] arr = el.split('@');
		return arr[0];
	})
	.collect(Collectors.toSet());