이런 뜻입니까?
map(String key, String arrayKey) {
List<Double> value = arrays.get(arrayKey);
}
은 또한 당신이 당신의 이중 배열을 직렬화 할 수 있으며, 다음을 다시 역 직렬화 :
Map<String, List<Double>> arrays = new HashMap<String, List<Double>>();
double[] array;
arrays.put("ArrayKey", Arrays.asList(array));
는 당신은 방법을지도 부를 수
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();
}
}
출력 :
Key=Key; Value=[0.0, 1.1, 2.2, 3.3]
매핑 속도는 빠르지 만 (다른 JVM으로 배열을 통과해야하는 경우) 당신이 그것을 위해 노드와 클러스터를 사용하는 경우 erialization 더 유용한 될 것입니다 :
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();
// Prepaire map, that contains reference for all arrays.
for (int i = 0; i < amount; i++) {
arrays.put("key_" + i, Arrays.asList(array));
}
// Getting array by its key in map.
for (int i = 0; i < amount; i++) {
arrays.get("key_" + i).toArray();
}
System.out.println("Mapping: " + (System.currentTimeMillis() - timeStamp) + " ms");
}
}
출력 :
Serialize: 298 ms
Deserialize: 254 ms
Mapping: 27 ms
왜 못해? 너 뭐 해봤 니? –
나는 Writable을 확장하는 Text 및 기타 기본 유형으로 만 작업했습니다. 나는 배열을 다루지 않았다. – jojoba