간단한 아날로그 WeakHashMap

1578 단어 WeakHashMap
이전 기사에서 언급한 WeakHashMap을 간단하게 모의해 보면 구체적인 코드는 다음과 같다.
1. 아날로그 맵 클래스를 만듭니다.
	class WeakMapTest<K, V> {
		private ReferenceQueue<K> rq = new ReferenceQueue<K>();
		private List<MyEntry> list = new ArrayList<MyEntry>();

		public void put(K k, V v) {
			list.add(new MyEntry(k, v, rq));
		}

		public boolean cantains(V v) {
			boolean flg = true;
			MyEntry e = null;
			while ((e = (MyEntry) rq.poll()) != null) {
				e.v = null;
				flg = false;
			}
			return flg;
		}

		class MyEntry extends WeakReference<K> {
			private V v;

			public MyEntry(K k, V v, ReferenceQueue<K> rq) {
				super(k, rq);
				this.v = v;
			}
		}
	}

 
 
2. 아날로그 클래스 호출 실현
 
	public void testMap() throws InterruptedException {
		WeakMapTest<Object, Object> test = new WeakMapTest<Object, Object>();
		Object k = new Object();
		Object v = new Object();
		test.put(k, v);
		System.out.println(test.cantains(v));
		k = null;
		System.gc();
		System.out.println(test.cantains(v));
	}

	public static void main(String[] args) {
		try {
			RefTest t = new RefTest();
			t.testMap();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

 
3. 출력은 다음과 같다.
truefalse

좋은 웹페이지 즐겨찾기