/* * ARX: Powerful Data Anonymization * Copyright 2012 - 2017 Fabian Prasser, Florian Kohlmayer and contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.deidentifier.arx.metric.v2; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import com.carrotsearch.hppc.IntIntOpenHashMap; import com.carrotsearch.hppc.LongDoubleOpenHashMap; /** * */ public class IO { /** * Reads a hash map from the stream. * * @param stream * @return * @throws ClassNotFoundException * @throws IOException */ public static IntIntOpenHashMap readIntIntOpenHashMap(ObjectInputStream stream) throws ClassNotFoundException, IOException { // Read boolean[] allocated = (boolean[]) stream.readObject(); int[] keys = (int[]) stream.readObject(); int[] values = (int[]) stream.readObject(); // Set IntIntOpenHashMap result = new IntIntOpenHashMap(); for (int i=0; i<allocated.length; i++) { if (allocated[i]) { result.put(keys[i], values[i]); } } // Return return result; } /** * Reads a hash map from the stream. * * @param stream * @return * @throws ClassNotFoundException * @throws IOException */ public static LongDoubleOpenHashMap readLongDoubleOpenHashMap(ObjectInputStream stream) throws ClassNotFoundException, IOException { // Read boolean[] allocated = (boolean[]) stream.readObject(); long[] keys = (long[]) stream.readObject(); double[] values = (double[]) stream.readObject(); // Set LongDoubleOpenHashMap result = new LongDoubleOpenHashMap(); for (int i=0; i<allocated.length; i++) { if (allocated[i]) { result.put(keys[i], values[i]); } } // Return return result; } /** * Reads a hash map from the stream. * * @param stream * @param hashmap * @throws IOException */ public static void writeIntIntOpenHashMap(ObjectOutputStream stream, IntIntOpenHashMap hashmap) throws IOException { // Write stream.writeObject(hashmap.allocated); stream.writeObject(hashmap.keys); stream.writeObject(hashmap.values); } /** * Reads a hash map from the stream. * * @param stream * @param hashmap * @throws IOException */ public static void writeLongDoubleOpenHashMap(ObjectOutputStream stream, LongDoubleOpenHashMap hashmap) throws IOException { // Write stream.writeObject(hashmap.allocated); stream.writeObject(hashmap.keys); stream.writeObject(hashmap.values); } }