@@ -77,20 +77,21 @@ public V get(K key) {
77
77
return null ;
78
78
}
79
79
80
- _entries .put (key , new WeakReference <>(value ));
81
80
public V put (K key , V value ) {
81
+ WeakReference <V > v = _entries .put (key , new WeakReference <>(value ));
82
82
makeMostRecent (key , value );
83
83
pruneEntries ();
84
+ return v != null ? v .get () : null ;
84
85
}
85
86
86
- public void remove (K key ) {
87
+ public V remove (Object key ) {
87
88
for (int i = 0 ; i < _recent .size (); ++i ) {
88
89
if (_recent .get (i ).getKey ().equals (key )) {
89
90
_recent .remove (i );
90
91
break ;
91
92
}
92
93
}
93
- _entries .remove (key );
94
+ return _entries .remove (key ). get ( );
94
95
}
95
96
96
97
private void pruneEntries () {
@@ -126,20 +127,21 @@ private void makeMostRecent(K key, V val) {
126
127
_recent .add (0 , new Tuple <>(key , val ));
127
128
}
128
129
129
- public String toString () {
130
- StringBuilder sb = new StringBuilder ();
131
- sb .append ("[" );
132
- sb .append (_entries .size ());
133
- sb .append ("]" );
134
- sb .append ("{" );
135
- _entries .entrySet ().forEach (e -> {
136
- sb .append (e .getKey ());
137
- sb .append ('=' );
138
- sb .append (e .getValue ().get ());
139
- sb .append (", " );
140
- });
141
- sb .setLength (sb .length () - 2 );
142
- sb .append ("}" );
143
- return sb .toString ();
144
- }
130
+ @ Override
131
+ public String toString () {
132
+ StringBuilder sb = new StringBuilder ();
133
+ sb .append ("[" );
134
+ sb .append (_entries .size ());
135
+ sb .append ("]" );
136
+ sb .append ("{" );
137
+ _entries .entrySet ().forEach (e -> {
138
+ sb .append (e .getKey ());
139
+ sb .append ('=' );
140
+ sb .append (e .getValue ().get ());
141
+ sb .append (", " );
142
+ });
143
+ sb .setLength (sb .length () - 2 );
144
+ sb .append ("}" );
145
+ return sb .toString ();
146
+ }
145
147
}
0 commit comments