지도를 사용하여 동일한 클래스/그룹과 관련된 객체의 집합/목록 또는 증가시키려는 AtomicInteger와 같은 값을 루프에 저장합니다. 내가 이렇게 종종 다음 코드 종류를 쓰기 (내지도에 null를 저장하지 않는 가정) :자바를 사용하여지도에서 누락 된 값을 자동으로 생성하는 관용구
/* Example #1 -- aggregation */
Map<K, Set<O>> map = new HashMap<K, Set<O>>();
for (O o : oList) {
K k = o.getK();
Set<O> oSet = map.get(k);
if (oSet == null) {
oSet = new HashSet<O>(o);
map.put(k, oSet);
} else {
oSet.add(o);
}
}
/* Example #2 -- counting */
Map<K, AtomicInteger> map = new HashMap<K, AtomicInteger>();
for (O o : oList) {
K k = o.getK();
AtomicInteger i = map.get(k);
if (i == null) {
i = new AtomicInteger(1);
map.put(k, i);
} else {
i.increment();
}
}
나는 즉시 공장/모델 객체에서 값을 만들 수 있습니다 아파치 공통의 컬렉션 DefaultedMap
알고 그것이 없을 때; 하지만 2/3 줄의 코드 작성 (다소 작음)을 피하기 위해 (다른) 외부 라이브러리에만 의존합니다.
더 쉬운 해결책이 있습니까 (특히 # 2). 이 경우 동료 개발자가 사용/권장하는 것은 무엇입니까? 이런 종류의 "기본지도"를 제공하는 다른 도서관이 있습니까? 자신 만의 장식 된지도를 작성합니까?