Do you mean something like this?
Map<String, List<Double>> arrays = new HashMap<String, List<Double>>(); double[] array; arrays.put("ArrayKey", Arrays.asList(array));
then you can call your map method:
map(String key, String arrayKey) { List<Double> value = arrays.get(arrayKey); }
You can also serialize your double array and then deserialize it back:
package test; import org.apache.commons.codec.binary.Base64InputStream; import org.apache.commons.codec.binary.Base64OutputStream; import java.io.*; import java.util.Arrays; public class Test { public static void main(String[] args) throws IOException, ClassNotFoundException { double[] array = {0.0, 1.1, 2.2, 3.3}; String stringValue = serialize(array); map("Key", stringValue); } public static void map(String key, String value) throws ClassNotFoundException, IOException { double[] array = deserialize(value); System.out.println("Key=" + key + "; Value=" + Arrays.toString(array)); } public static String serialize(double[] array) throws IOException { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); Base64OutputStream base64OutputStream = new Base64OutputStream(byteArrayOutputStream); ObjectOutputStream oos = new ObjectOutputStream(base64OutputStream); oos.writeObject(array); oos.flush(); oos.close(); return byteArrayOutputStream.toString(); } public static double[] deserialize(String stringArray) throws IOException, ClassNotFoundException { ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(stringArray.getBytes()); Base64InputStream base64InputStream = new Base64InputStream(byteArrayInputStream); ObjectInputStream iis = new ObjectInputStream(base64InputStream); return (double[]) iis.readObject(); } }
OUTPUT:
Key=Key; Value=[0.0, 1.1, 2.2, 3.3]
The mapping is faster, but serialization will be more useful if you use nodes and clusters for this (if you need to transfer your arrays to another JVM):
private static class SpeedTest { private static final Map<String, List> arrays = new HashMap<String, List>(); public static void test(final double[] array) throws IOException, ClassNotFoundException { final String str = serialize(array); final int amount = 10 * 1000; long timeStamp = System.currentTimeMillis(); for (int i = 0; i < amount; i++) { serialize(array); } System.out.println("Serialize: " + (System.currentTimeMillis() - timeStamp) + " ms"); timeStamp = System.currentTimeMillis(); for (int i = 0; i < amount; i++) { deserialize(str); } System.out.println("Deserialize: " + (System.currentTimeMillis() - timeStamp) + " ms"); arrays.clear(); timeStamp = System.currentTimeMillis();
OUTPUT:
Serialize: 298 ms Deserialize: 254 ms Mapping: 27 ms