2014-01-16 4 views
2

Есть ли класс карты, в котором все значения являются слабыми ссылками? Как WeakHashMap, но для значений вместо ключей.WeakHashMap со слабо обозначенными значениями вместо ключей

Спасибо заранее ...

+0

Не будет ли это просто «Карта >'? – user2864740

+0

@ user2864740: Это не будет автоматически очищать записи для собранных мусора значений. – user2357112

+0

Существует 'com.sun.beans.WeakCache', который имеет как слабые клавиши, так и слабые значения, но вы не должны его использовать. – EJP

ответ

1

Вы можете использовать MapMaker, который является частью гуавы.

«Java DOC: мягких или слабые ключи, мягкие или слабые значения, приуроченные действия и вычисления по требованию значений: A ConcurrentMap строитель, обеспечивая любую комбинацию этих функций.»

ConcurrentMap<Key, Graph> graphs = new MapMaker() 
     .concurrencyLevel(32) 
     .softKeys() 
     .weakValues() 
     .expiration(30, TimeUnit.MINUTES) 
     .makeComputingMap(
      new Function<Key, Graph>() { 
      public Graph apply(Key key) { 
       return createExpensiveGraph(key); 
      } 
      }); 

Это в значительной степени настраивается.

Смежные вопросы