H
Hendrik Maryns
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi,
I need something like WeakHashMap, but with the inverse function: I want
the values to be weakly referenced to, and the entry to be discarded
from the map once the value no longer exists. Is there a standard
implementation for this?
But maybe, as happens often, I am saying: I want X, whereas actually I
want Y, but think I need X to achieve it. So here is my real problem:
I have some small wrapper objects, whose identity is determined by the
array of some other objects they contain. I want to avoid unnecessary
implementations of those wrappers, so I wanted to write a factory
method. The first idea is to have a Map mapping lists to objects
(arrays do not give good hash codes, so I convert them with
Arrays.asList first). Now, the whole idea is to save memory, so I don’t
want this map to get unnecessarily big. The idea is: using weak
references I can have it clean up itself. But WeakHashMap does just the
inverse: it weakly wraps the key, not the value. And using the
suggestion in the javadoc will not work too, I think: I can wrap the
values myself, but the keys are lists made on the fly, so the weak hash
map will throw those entries away too soon!
One solution I see, is to use an ordinary HashMap, wrap the values in
weak references, and do some cleanup in the map from time to time. But
I am not sure how I should implement ‘from time to time’, then.
Suggestions welcome!
TIA, H.
- --
Hendrik Maryns
==================
http://aouw.org
Ask smart questions, get good answers:
http://www.catb.org/~esr/faqs/smart-questions.html
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)
iD4DBQFEiEoNe+7xMGD3itQRAimdAJiJ2EnFnfL3x5/yKkhP309ok4LlAJ4sWKJs
zwM7OKrbnf4YScBMJShK2w==
=EIP6
-----END PGP SIGNATURE-----
Hash: SHA1
Hi,
I need something like WeakHashMap, but with the inverse function: I want
the values to be weakly referenced to, and the entry to be discarded
from the map once the value no longer exists. Is there a standard
implementation for this?
But maybe, as happens often, I am saying: I want X, whereas actually I
want Y, but think I need X to achieve it. So here is my real problem:
I have some small wrapper objects, whose identity is determined by the
array of some other objects they contain. I want to avoid unnecessary
implementations of those wrappers, so I wanted to write a factory
method. The first idea is to have a Map mapping lists to objects
(arrays do not give good hash codes, so I convert them with
Arrays.asList first). Now, the whole idea is to save memory, so I don’t
want this map to get unnecessarily big. The idea is: using weak
references I can have it clean up itself. But WeakHashMap does just the
inverse: it weakly wraps the key, not the value. And using the
suggestion in the javadoc will not work too, I think: I can wrap the
values myself, but the keys are lists made on the fly, so the weak hash
map will throw those entries away too soon!
One solution I see, is to use an ordinary HashMap, wrap the values in
weak references, and do some cleanup in the map from time to time. But
I am not sure how I should implement ‘from time to time’, then.
Suggestions welcome!
TIA, H.
- --
Hendrik Maryns
==================
http://aouw.org
Ask smart questions, get good answers:
http://www.catb.org/~esr/faqs/smart-questions.html
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)
iD4DBQFEiEoNe+7xMGD3itQRAimdAJiJ2EnFnfL3x5/yKkhP309ok4LlAJ4sWKJs
zwM7OKrbnf4YScBMJShK2w==
=EIP6
-----END PGP SIGNATURE-----