Мне нужна карта одновременного хэширования со слабыми или мягкими клавишами, если равенство равно, а не ==.
Для ключей такого типа коллекция Google выбирает == по умолчанию.
Есть ли способ отменить этот выбор? Как мне поступить?
С уважением,
Nicolas.
Вы можете использовать java.util.WeakHashMap, завернутый с вызовом на Collections.synchronizedMap()
java.util.WeakHashMap
Collections.synchronizedMap()
Это не будет так же быстро, как ConcurrentHashMap, если конфликт потоков значительный. Но у него есть поведение, которое вы хотите.
Вы не можете сделать это в Google-коллекциях. Вы не можете сделать это в гуаве в настоящее время. Однако они недавно добавили интерфейс Эквивалентность и реализации, которые вы ожидаете от него (equals, null * -aware equals и ==), и похоже, что они может позволить вам указать, что Equivalence будет использоваться для ключей / значений в будущем (см. , эта проблема ). MapMaker Код, похоже, претерпевает некоторые изменения в это время.
equals
null
==
Equivalence
MapMaker