util: LinkedHashMapRemoveEldest refactored

This commit is contained in:
Sergey Matvienko 2021-05-18 14:28:59 +03:00 committed by Andrew Shvayka
parent 3d3aae60d8
commit 57b0e19ec8
2 changed files with 8 additions and 6 deletions

View File

@ -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;
} }
} }

View File

@ -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));