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

  • 相关阅读:
    LeetCode翻转矩阵后的得分-Python3<六>
    LeetCode子域名访问计数-Python3.7<五>
    LeetCode 键盘行-Python3.7<四>
    流程控制<二>
    Numbers、Strings、Lists 笔记<一>
    LeetCode-数组操作-Python<三>
    LeetCode链表相加-Python<二>
    LeetCode两数之和-Python<一>
    使用Django创建网站项目<二>
    Windows下vue-cli脚手架搭建入门<一>
  • 原文地址:https://www.cnblogs.com/sunwufan/p/3147839.html
Copyright © 2011-2022 走看看