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,作参考。

  • 相关阅读:
    redis下载安装及php配置redis
    php--小数点问题
    php--0与空的判断
    php--判断是否是手机端
    php--ip的处理
    mysql--sql_mode报错整理
    mysql-建表、添加字段、修改字段、添加索引SQL语句写法
    Python-多任务复制文件夹
    Python学习笔记(十一)——赋值、深拷贝与浅拷贝
    Python学习笔记(十)—JSON格式的处理
  • 原文地址:https://www.cnblogs.com/sunwufan/p/3147839.html
Copyright © 2011-2022 走看看