static으로 선언된 HashMap의 경우 containsKey() 이후 해당 객체를 remove하면 삭제가 되지 않습니다. 너무 당연한 이야기인지도 모르겠습니다.

보통 삭제시킬 key값을 다른 메소드에서 로컬 변수 형태로 선언하고 그 값을 이용하여 삭제하려고 하는데 이 때 스태틱(static)메모리를 사용하는 경우 visible하지 않기 때문이겠지요.

이 경우 다음과 같이 키를 찾아 삭제해야 합니다.


if( tracer.containsKey(transactionId)) {
			for (Iterator>> i= tracer.entrySet().iterator(); i.hasNext(); ) {
				Map.Entry> entry= i.next();
				if( entry.getKey().equals(transactionId)) {
					i.remove();
				}
			}
		}
크리에이티브 커먼즈 라이센스
Creative Commons License
2010/02/19 16:19 2010/02/19 16:19
http://www.javapattern.info/trackback/326