Из J. Блох
A... источником утечек памяти является слушателей... Лучший способ обеспечить, чтобы обратные вызовы - сбор мусора оперативно хранить только слабые ссылки на них, например, сохраняя их только как ключи в WeakHashMap.
Итак, почему в Java Структура коллекций отсутствует