zoukankan      html  css  js  c++  java
  • 重写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,作参考。

  • 相关阅读:
    python基础练习:
    py+selenium切换到新弹出窗口通用方法
    Python 异常处理
    验证码自动化认证部分,可能由于分辨率导致截图不正确
    基于Tesseract的OCR图像识别
    Spark相关知识
    Hive和数据库除了拥有类似的查询语言,再无类似之处;关系型数据库和非关系型数据库的优缺点
    sed替换^A(01),02,03等特殊字符
    Python操作adb命令脚本
    python从放弃到放弃
  • 原文地址:https://www.cnblogs.com/sunwufan/p/3147839.html
Copyright © 2011-2022 走看看