OverlayJSONObject.java 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package com.boman.system.common;
  2. import com.alibaba.fastjson.JSONObject;
  3. import java.util.AbstractMap;
  4. import java.util.Set;
  5. import java.util.stream.Collectors;
  6. import java.util.stream.Stream;
  7. /**
  8. * @author lzm
  9. * @date 2018/10/29
  10. * 可被覆盖的
  11. */
  12. public class OverlayJSONObject extends AbstractMap {
  13. private JSONObject baseData;
  14. private JSONObject data;
  15. public OverlayJSONObject(JSONObject base, JSONObject data) {
  16. if (data == null) {
  17. throw new IllegalArgumentException("入口的新集合不可为空!");
  18. }
  19. this.baseData = base;
  20. this.data = data;
  21. }
  22. @Override
  23. public Object remove(Object key) {
  24. return data.remove(key);
  25. }
  26. @Override
  27. public Object put(Object key, Object value) {
  28. return data.put((String) key, value);
  29. }
  30. @Override
  31. public Set<Entry<String, Object>> entrySet() {
  32. if (this.baseData == null) {
  33. return this.data.entrySet();
  34. } else {
  35. return Stream.concat(this.data.entrySet().stream(), this.baseData.entrySet().stream()
  36. .filter(pair -> !this.data.containsKey(pair.getKey()))).collect(Collectors.toSet());
  37. }
  38. }
  39. }