package jsettlers.logic;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.lang.reflect.Array;
public class SerializationUtils {
public static <T> void writeSparseArray(ObjectOutputStream oos, T[] data) throws IOException {
oos.writeInt(data.length);
for (int index = 0; index < data.length; index++) {
T object = data[index];
if (object != null) {
oos.writeInt(index);
oos.writeObject(object);
}
}
oos.writeInt(-1);
oos.flush();
}
@SuppressWarnings("unchecked")
public static <T> T[] readSparseArray(ObjectInputStream ois, Class<T> arrayElementType) throws IOException, ClassNotFoundException {
int length = ois.readInt();
T[] data = (T[]) Array.newInstance(arrayElementType, length);
int index = ois.readInt();
while (index >= 0) {
data[index] = (T) ois.readObject();
index = ois.readInt();
}
return data;
}
}