重写HashMap
package gov.gfmis.fap.util; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.dom4j.Attribute; import org.dom4j.Element; /** * xml对象模型 * /属性(值对模式保存) * * XMLData -父子结构则递归保存XMLData * /单个要素节点则存放属性XMLData * \子节点 * \多个相同要素节点则存放List * 使用这种模式应避免让元素名和属性名相同 * eg: * */XMLData aa --XMLData bb * /List aa * ------>XMLData data \XMLData aa *\XMLData cc * * @version 1.0 * @author victor * @see XMLObjectVisitor#visit(Element) * @see XMLObjectVisitor#visit(Attribute) * @since java 1.4.1 */ public class XMLData extends HashMap { private static final long serialVersionUID = 100000000000000L; /** * 重载Map的put方法,实现个性化需求 * @param childName 对象名 * @param child 对象 * @return 原值对象,若不存在则为null */ public Object put(Object childName,Object child) { return this.addObject(this,(String)childName,child); } /** * 根据对象名,将对象保存在父对象中,覆盖原同名对象 * @param parent 父Map对象 * @param child 子Map对象 * @param childName 子对象名称 * @return 原值对象,若不存在则为null */ private Object addObject(XMLData parent,String childName,Object child) { Object oldObj = parent.get(childName); if(parent.get(childName) == null) { super.put(childName,child); } else if(parent.get(childName) instanceof Map) { List list = new ArrayList(); list.add(parent.get(childName)); list.add(child); super.put(childName,list); } else if(parent.get(childName) instanceof List) { List ls = (List)parent.get(childName); ls.add(child); } else super.put(childName,child); return oldObj; } }*
别人重写的HashMap,作参考。