package com.boman.system.common; import com.alibaba.fastjson.JSONObject; import java.util.AbstractMap; import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; /** * @author lzm * @date 2018/10/29 * 可被覆盖的 */ public class OverlayJSONObject extends AbstractMap { private JSONObject baseData; private JSONObject data; public OverlayJSONObject(JSONObject base, JSONObject data) { if (data == null) { throw new IllegalArgumentException("入口的新集合不可为空!"); } this.baseData = base; this.data = data; } @Override public Object remove(Object key) { return data.remove(key); } @Override public Object put(Object key, Object value) { return data.put((String) key, value); } @Override public Set> entrySet() { if (this.baseData == null) { return this.data.entrySet(); } else { return Stream.concat(this.data.entrySet().stream(), this.baseData.entrySet().stream() .filter(pair -> !this.data.containsKey(pair.getKey()))).collect(Collectors.toSet()); } } }