Order Retaining Map
//package com.thoughtworks.xstream.core.util; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Set; public class OrderRetainingMap extends HashMap { private Set keyOrder = new ArraySet(); private List valueOrder = new ArrayList(); public Object put(Object key, Object value) { keyOrder.add(key); valueOrder.add(value); return super.put(key, value); } public Collection values() { return Collections.unmodifiableList(valueOrder); } public Set keySet() { return Collections.unmodifiableSet(keyOrder); } public Set entrySet() { throw new UnsupportedOperationException(); } private static class ArraySet extends ArrayList implements Set { } }