diff options
| author | Ben Culkin <scorpress@gmail.com> | 2020-11-17 17:44:05 -0500 |
|---|---|---|
| committer | Ben Culkin <scorpress@gmail.com> | 2020-11-17 17:44:05 -0500 |
| commit | 213171f95845ebc5efcfa73d1cab4b723ff2abf2 (patch) | |
| tree | e0c167842d8923e5a0235a9e64fc0d7fe7201cf8 /src/main/java/bjc/funcdata/IMap.java | |
| parent | 38e97f991ee69afd53f36fd7296b4afd5a621311 (diff) | |
Implement IFreezable for IMap
Diffstat (limited to 'src/main/java/bjc/funcdata/IMap.java')
| -rw-r--r-- | src/main/java/bjc/funcdata/IMap.java | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/src/main/java/bjc/funcdata/IMap.java b/src/main/java/bjc/funcdata/IMap.java index dc5ee00..e723507 100644 --- a/src/main/java/bjc/funcdata/IMap.java +++ b/src/main/java/bjc/funcdata/IMap.java @@ -1,8 +1,6 @@ package bjc.funcdata; -import java.util.function.BiConsumer; -import java.util.function.Consumer; -import java.util.function.Function; +import java.util.function.*; /** * Functional wrapper over map providing some useful things. @@ -15,7 +13,7 @@ import java.util.function.Function; * @param <ValueType> * The type of this map's values. */ -public interface IMap<KeyType, ValueType> { +public interface IMap<KeyType, ValueType> extends IFreezable { /** * Execute an action for each entry in the map. * @@ -109,7 +107,7 @@ public interface IMap<KeyType, ValueType> { /** Delete all the values in the map. */ default void clear() { - keyList().forEach(key -> remove(key)); + keyList().forEach(IMap.this::remove); } /** @@ -151,7 +149,21 @@ public interface IMap<KeyType, ValueType> { * * @return An extended map. */ - IMap<KeyType, ValueType> extend(); + default IMap<KeyType, ValueType> extend() { + return extend(new FunctionalMap<>()); + }; + + /** + * Extends this map, creating a new map that will delegate queries to this map, + * but store any added values in the provided map. + * + * @param backer The map to store added values in. + * + * @return An extended map. + */ + default IMap<KeyType, ValueType> extend(IMap<KeyType, ValueType> backer) { + return new ExtendedMap<>(this, backer); + }; /** * Remove the value bound to the key. |
