feat: 新增 MapModifier 用于链式操作修改 Map 数据 #71

Merged
zhouxy108 merged 4 commits from zhouxy108/plusone-commons:feature/map-modifier into dev 2025-10-22 09:37:05 +08:00
2 changed files with 339 additions and 0 deletions
Showing only changes of commit 3155964b7c - Show all commits

View File

@@ -40,28 +40,28 @@ import com.google.common.annotations.Beta;
* *
* <pre> * <pre>
* // MapModifier * // MapModifier
* MapModifier<String, Object> modifier = new MapModifier<String, Object>() * MapModifier&lt;String, Object&gt; modifier = new MapModifier&lt;String, Object&gt;()
* .putAll(commonProperties) * .putAll(commonProperties)
* .put("username", "Ben") * .put("username", "Ben")
* .put("accountStatus", LOCKED); * .put("accountStatus", LOCKED);
* *
* // 从 Supplier 中获取 Map并修改数据 * // 从 Supplier 中获取 Map并修改数据
* Map<String, Object> map = modifier.getAndModify(HashMap::new); * Map&lt;String, Object&gt; map = modifier.getAndModify(HashMap::new);
* *
* // 可以灵活使用不同 Map 类型的不同构造器 * // 可以灵活使用不同 Map 类型的不同构造器
* Map<String, Object> map = modifier.getAndModify(() -> new HashMap<>(8)); * Map&lt;String, Object&gt; map = modifier.getAndModify(() -&gt; new HashMap&lt;&gt;(8));
* Map<String, Object> map = modifier.getAndModify(() -> new HashMap<>(anotherMap)); * Map&lt;String, Object&gt; map = modifier.getAndModify(() -&gt; new HashMap&lt;&gt;(anotherMap));
* Map<String, Object> map = modifier.getAndModify(TreeMap::new); * Map&lt;String, Object&gt; map = modifier.getAndModify(TreeMap::new);
* Map<String, Object> map = modifier.getAndModify(ConcurrentHashMap::new); * Map&lt;String, Object&gt; map = modifier.getAndModify(ConcurrentHashMap::new);
* *
* // 修改已有的 Map * // 修改已有的 Map
* modifier.modify(map); * modifier.modify(map);
* *
* // 创建一个有初始化数据的不可变的 Map * // 创建一个有初始化数据的不可变的 Map
* Map<String, Object> map = modifier.getUnmodifiableMap(); * Map&lt;String, Object&gt; map = modifier.getUnmodifiableMap();
* *
* // 链式调用创建并初始化数据 * // 链式调用创建并初始化数据
* Map<String, Object> map = new MapModifier<String, Object>() * Map&lt;String, Object&gt; map = new MapModifier&lt;String, Object&gt;()
* .putAll(commonProperties) * .putAll(commonProperties)
* .put("username", "Ben") * .put("username", "Ben")
* .put("accountStatus", LOCKED) * .put("accountStatus", LOCKED)