Class Cache3<K1,K2,K3,V>
- Type Parameters:
K1- The first key type.K2- The second key type.K3- The third key type.V- The value type.
Overview:
This class uses ConcurrentHashMap internally to provide a thread-safe caching layer with automatic
value computation, cache eviction, and statistics tracking for three-part composite keys. It's designed for
caching expensive-to-compute or frequently-accessed objects indexed by three keys.
Features:
- Thread-safe concurrent access without external synchronization
- Three-part composite key support
- Automatic cache eviction when maximum size is reached
- Lazy computation via
Function3supplier pattern - Default supplier support for simplified access
- Built-in hit/miss statistics tracking
- Optional logging of cache statistics on JVM shutdown
- Can be disabled entirely via builder or system property
Usage:
See Also:
-
Nested Class Summary
Nested Classes -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidclear()Removes all entries from the cache.booleancontainsKey(K1 key1, K2 key2, K3 key3) Returnstrue if the cache contains a mapping for the specified key triplet.booleancontainsValue(V value) Returnstrue if the cache contains one or more entries with the specified value.static <K1,K2, K3, V>
Cache3.Builder<K1,K2, K3, V> create()Creates a newCache3.Builderfor constructing a cache with explicit type parameters.Retrieves a cached value by key triplet using the default supplier.Retrieves a cached value by key triplet, computing it if necessary using the provided supplier.intReturns the total number of cache hits since this cache was created.booleanisEmpty()Returnstrue if the cache contains no entries.static <K1,K2, K3, V>
Cache3.Builder<K1,K2, K3, V> Creates a newCache3.Builderfor constructing a cache.Associates the specified value with the specified key triplet.Removes the entry for the specified key triplet from the cache.intsize()Returns the number of entries in the cache.
-
Constructor Details
-
Cache3
Constructor.- Parameters:
builder- The builder containing configuration settings.
-
-
Method Details
-
create
Creates a newCache3.Builderfor constructing a cache with explicit type parameters.This variant allows you to specify the cache's generic types explicitly without passing the class objects, which is useful when working with complex parameterized types.
- Type Parameters:
K1- The first key type.K2- The second key type.K3- The third key type.V- The value type.- Returns:
- A new builder for configuring the cache.
-
of
public static <K1,K2, Cache3.Builder<K1,K3, V> K2, ofK3, V> (Class<K1> key1, Class<K2> key2, Class<K3> key3, Class<V> type) Creates a newCache3.Builderfor constructing a cache.- Type Parameters:
K1- The first key type.K2- The second key type.K3- The third key type.V- The value type.- Parameters:
key1- The first key type class (used for type safety).key2- The second key type class (used for type safety).key3- The third key type class (used for type safety).type- The value type class.- Returns:
- A new builder for configuring the cache.
-
clear
Removes all entries from the cache. -
containsKey
Returnstrue if the cache contains a mapping for the specified key triplet.- Parameters:
key1- The first key. Can benull .key2- The second key. Can benull .key3- The third key. Can benull .- Returns:
true if the cache contains the key triplet.
-
containsValue
Returnstrue if the cache contains one or more entries with the specified value.- Parameters:
value- The value to check.- Returns:
true if the cache contains the value.
-
get
Retrieves a cached value by key triplet using the default supplier.- Parameters:
key1- First key component. Can benull .key2- Second key component. Can benull .key3- Third key component. Can benull .- Returns:
- The cached or computed value. May be
null if the supplier returnsnull . - Throws:
NullPointerException- if no default supplier was configured.
-
get
Retrieves a cached value by key triplet, computing it if necessary using the provided supplier.- Parameters:
key1- First key component. Can benull .key2- Second key component. Can benull .key3- Third key component. Can benull .supplier- The supplier to compute the value if it's not in the cache. Must not benull .- Returns:
- The cached or computed value. May be
null if the supplier returnsnull .
-
getCacheHits
Returns the total number of cache hits since this cache was created.- Returns:
- The total number of cache hits since creation.
-
isEmpty
Returnstrue if the cache contains no entries.- Returns:
true if the cache is empty.
-
put
Associates the specified value with the specified key triplet.- Parameters:
key1- The first key. Can benull .key2- The second key. Can benull .key3- The third key. Can benull .value- The value to associate with the key triplet.- Returns:
- The previous value associated with the key triplet, or
null if there was no mapping.
-
remove
Removes the entry for the specified key triplet from the cache.- Parameters:
key1- The first key. Can benull .key2- The second key. Can benull .key3- The third key. Can benull .- Returns:
- The previous value associated with the key triplet, or
null if there was no mapping.
-
size
Returns the number of entries in the cache.- Returns:
- The number of cached entries.
-