用java实现php式的字典使用方式(未做异常处理)

来源:互联网 发布:秀场直播网站程序源码 编辑:程序博客网 时间:2024/06/05 06:47

用java实现php式的字典使用方式(未做异常处理)

sample:

  • php :
array = {}array["multi"]["dimensional"]["array"] = "hello"echo array["multi"]["dimensional"]["array"]
  • java
NestedMap array = new NestedMap();   array.put("multi").put("dimensional").put("array").giveValue("hello");      System.out.println(array.get("multi").get("dimensional").getValue("array"));

java code:

import sun.font.TrueTypeFont;import sun.jvm.hotspot.utilities.Assert;import java.awt.geom.NoninvertibleTransformException;import java.util.HashMap;import java.util.Map;//java实现字典的使用形式public class NestedMap<Object> {    private Map<Object,Object> nestmap = new HashMap<>();    private Map<Object,Object> curleve = nestmap;    private Map<Object,Object> preleve = nestmap;    private Object k;    public NestedMap<Object> put(Object key) {        if(curleve == null){            curleve = new HashMap<Object, Object>();            curleve.put(key,null);            preleve.put(k, (Object) curleve);        }        else if(curleve.get(key) == null)            curleve.put(key,null);        preleve = curleve;        curleve = (Map<Object, Object>) curleve.get(key);        k = key;        return this;    }    public void giveValue(Object val){        preleve.put(k,val);        curleve = nestmap;        k = null;    }    public Object getValue(Object key){        Object rs = curleve.get(key);        curleve = nestmap;        return rs;    }    public NestedMap get(Object key){        curleve.get(key);        curleve = (Map<Object, Object>) curleve.get(key);        return this;    }    public void clear(){        nestmap = curleve = null;    }    public static void main(String[] args){        NestedMap nestedMap = new NestedMap();        nestedMap.put("a").put("b").put("c").giveValue("x");        nestedMap.put("a").put("c").giveValue("c");        nestedMap.put("e").put("b").giveValue("hello");        nestedMap.put("a").giveValue("hello");        nestedMap.put("e").put("a").put("c").giveValue("world");        String x = (String) nestedMap.getValue("a");        String y = (String) nestedMap.get("e").get("a").getValue("c");        System.out.println(x.equals("hello") && y.equals("world"));    }}