util: LinkedHashMapRemoveEldest refactored
This commit is contained in:
parent
3d3aae60d8
commit
57b0e19ec8
@ -50,11 +50,11 @@ import java.util.function.BiConsumer;
|
|||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
public class LinkedHashMapRemoveEldest<K, V> extends LinkedHashMap<K, V> {
|
public class LinkedHashMapRemoveEldest<K, V> extends LinkedHashMap<K, V> {
|
||||||
final long maxEntries;
|
final long maxEntries;
|
||||||
final BiConsumer<K, V> removeConsumer;
|
final BiConsumer<K, V> removalConsumer;
|
||||||
|
|
||||||
public LinkedHashMapRemoveEldest(long maxEntries, BiConsumer<K, V> removeConsumer) {
|
public LinkedHashMapRemoveEldest(long maxEntries, BiConsumer<K, V> removalConsumer) {
|
||||||
this.maxEntries = maxEntries;
|
this.maxEntries = maxEntries;
|
||||||
this.removeConsumer = removeConsumer;
|
this.removalConsumer = removalConsumer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -62,7 +62,7 @@ public class LinkedHashMapRemoveEldest<K, V> extends LinkedHashMap<K, V> {
|
|||||||
if (size() <= maxEntries) {
|
if (size() <= maxEntries) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
removeConsumer.accept(eldest.getKey(), eldest.getValue());
|
removalConsumer.accept(eldest.getKey(), eldest.getValue());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -37,6 +37,7 @@ import java.util.LinkedHashMap;
|
|||||||
|
|
||||||
import static org.hamcrest.CoreMatchers.instanceOf;
|
import static org.hamcrest.CoreMatchers.instanceOf;
|
||||||
import static org.hamcrest.CoreMatchers.is;
|
import static org.hamcrest.CoreMatchers.is;
|
||||||
|
import static org.hamcrest.CoreMatchers.notNullValue;
|
||||||
import static org.hamcrest.MatcherAssert.assertThat;
|
import static org.hamcrest.MatcherAssert.assertThat;
|
||||||
|
|
||||||
public class LinkedHashMapRemoveEldestTest {
|
public class LinkedHashMapRemoveEldestTest {
|
||||||
@ -44,7 +45,7 @@ public class LinkedHashMapRemoveEldestTest {
|
|||||||
public static final long MAX_ENTRIES = 10L;
|
public static final long MAX_ENTRIES = 10L;
|
||||||
long removeCount = 0;
|
long removeCount = 0;
|
||||||
|
|
||||||
void removeConsumer(Long id, String name) {
|
void removalConsumer(Long id, String name) {
|
||||||
removeCount++;
|
removeCount++;
|
||||||
assertThat(id, is(Matchers.lessThan(MAX_ENTRIES)));
|
assertThat(id, is(Matchers.lessThan(MAX_ENTRIES)));
|
||||||
assertThat(name, is(id.toString()));
|
assertThat(name, is(id.toString()));
|
||||||
@ -54,9 +55,10 @@ public class LinkedHashMapRemoveEldestTest {
|
|||||||
public void givenMap_whenOverSized_thenVerifyRemovedEldest() {
|
public void givenMap_whenOverSized_thenVerifyRemovedEldest() {
|
||||||
//given
|
//given
|
||||||
LinkedHashMapRemoveEldest<Long, String> map =
|
LinkedHashMapRemoveEldest<Long, String> map =
|
||||||
new LinkedHashMapRemoveEldest<>(MAX_ENTRIES, this::removeConsumer);
|
new LinkedHashMapRemoveEldest<>(MAX_ENTRIES, this::removalConsumer);
|
||||||
|
|
||||||
assertThat(map.getMaxEntries(), is(MAX_ENTRIES));
|
assertThat(map.getMaxEntries(), is(MAX_ENTRIES));
|
||||||
|
assertThat(map.getRemovalConsumer(), notNullValue());
|
||||||
assertThat(map, instanceOf(LinkedHashMap.class));
|
assertThat(map, instanceOf(LinkedHashMap.class));
|
||||||
assertThat(map, instanceOf(LinkedHashMapRemoveEldest.class));
|
assertThat(map, instanceOf(LinkedHashMapRemoveEldest.class));
|
||||||
assertThat(map.size(), is(0));
|
assertThat(map.size(), is(0));
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user