package org.opendedup.util; import java.nio.ByteBuffer; import java.util.HashMap; import java.util.Iterator; public class ByteUtils { public static byte [] serializeHashMap(HashMap<String,String> map) { StringBuffer keys = new StringBuffer(); Iterator<String> iter = map.keySet().iterator(); while(iter.hasNext()) { String key = iter.next(); keys.append(key); if(iter.hasNext()) keys.append(","); } StringBuffer values = new StringBuffer(); iter = map.values().iterator(); while(iter.hasNext()) { String key = iter.next(); values.append(key); if(iter.hasNext()) values.append(","); } byte [] kb = keys.toString().getBytes(); byte [] vb = values.toString().getBytes(); byte [] out = new byte[kb.length + vb.length + 8]; ByteBuffer buf = ByteBuffer.wrap(out); buf.putInt(kb.length); buf.put(kb); buf.putInt(vb.length); buf.put(vb); return buf.array(); } public static HashMap<String,String> deSerializeHashMap(byte [] b) { ByteBuffer buf = ByteBuffer.wrap(b); byte [] kb = new byte[buf.getInt()]; buf.get(kb); byte [] vb = new byte[buf.getInt()]; buf.get(vb); String [] keys = new String(kb).split(","); String [] values = new String(vb).split(","); HashMap<String,String> map = new HashMap<String,String>(); for(int i = 0;i< keys.length;i++) { map.put(keys[i], values[i]); } return map; } }