![JAR search and dependency download from the Maven repository](/logo.png)
de.gsi.chart.renderer.spi.utils.Cache Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of chartfx-chart Show documentation
Show all versions of chartfx-chart Show documentation
This charting library ${project.artifactId}- is an extension
in the spirit of Oracle's XYChart and performance/time-proven JDataViewer charting functionalities.
Emphasis was put on plotting performance for both large number of data points and real-time displays,
as well as scientific accuracies leading to error bar/surface plots, and other scientific plotting
features (parameter measurements, fitting, multiple axes, zoom, ...).
package de.gsi.chart.renderer.spi.utils;
import java.util.WeakHashMap;
@SuppressWarnings({"PMD.AvoidSynchronizedAtMethodLevel"})
public final class Cache { // NOPMD nomen est omen
// TODO: consider HashMap>
// TODO: incorporate nice feature of timed cache rather than WeakHashMap see for example
// https://github.com/HanSolo/cache/blob/master/src/main/java/eu/hansolo/cache/Cache.java
// was: ConcurrentHashMap
private static WeakHashMap> doubleArrayCache = new WeakHashMap<>();
private static WeakHashMap> intArrayCache = new WeakHashMap<>();
private static WeakHashMap> booleanArrayCache = new WeakHashMap<>();
private static WeakHashMap> stringArrayCache = new WeakHashMap<>();
public static synchronized double[] getCachedDoubleArray(final String arrayName, final int size) {
final WeakHashMap nameHashMap = doubleArrayCache.computeIfAbsent(arrayName, key -> new WeakHashMap<>());
double[] cachedArray = nameHashMap.get(size);
if (cachedArray == null) {
cachedArray = new double[size];
} else {
doubleArrayCache.get(arrayName).remove(size);
}
return cachedArray;
}
public static synchronized void release(final String arrayName, final double[] cachedArray) {
if (cachedArray == null) {
return;
}
doubleArrayCache.get(arrayName).put(cachedArray.length, cachedArray);
}
public static synchronized int[] getCachedIntArray(final String arrayName, final int size) {
final WeakHashMap nameHashMap = intArrayCache.computeIfAbsent(arrayName, key -> new WeakHashMap<>());
int[] cachedArray = nameHashMap.get(size);
if (cachedArray == null) {
cachedArray = new int[size];
} else {
intArrayCache.get(arrayName).remove(size);
}
return cachedArray;
}
public static synchronized void release(final String arrayName, final int[] cachedArray) {
if (cachedArray == null) {
return;
}
intArrayCache.get(arrayName).put(cachedArray.length, cachedArray);
}
public static synchronized boolean[] getCachedBooleanArray(final String arrayName, final int size) {
final WeakHashMap nameHashMap = booleanArrayCache.computeIfAbsent(arrayName, key -> new WeakHashMap<>());
boolean[] cachedArray = nameHashMap.get(size);
if (cachedArray == null) {
cachedArray = new boolean[size];
} else {
booleanArrayCache.get(arrayName).remove(size);
}
return cachedArray;
}
public static synchronized void release(final String arrayName, final boolean[] cachedArray) {
if (cachedArray == null) {
return;
}
booleanArrayCache.get(arrayName).put(cachedArray.length, cachedArray);
}
public static synchronized String[] getCachedStringArray(final String arrayName, final int size) {
final WeakHashMap nameHashMap = stringArrayCache.computeIfAbsent(arrayName, key -> new WeakHashMap<>());
String[] cachedArray = nameHashMap.get(size);
if (cachedArray == null) {
cachedArray = new String[size];
} else {
stringArrayCache.get(arrayName).remove(size);
}
return cachedArray;
}
public static synchronized void release(final String arrayName, final String[] cachedArray) {
if (cachedArray == null) {
return;
}
stringArrayCache.get(arrayName).put(cachedArray.length, cachedArray);
}
// public static void main(String argv[]) {
// // https://www.baeldung.com/guava-cache
// CacheLoader loader;
// loader = new CacheLoader() {
// @Override
// public String load(String key) {
// return key.toUpperCase();
// }
// };
//
// LoadingCache cache;
// cache = CacheBuilder.newBuilder().build(loader);
//
//// assertEquals(0, cache.size());
//// assertEquals("HELLO", cache.getUnchecked("hello"));
//// assertEquals(1, cache.size());
// }
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy