diff --git a/hutool-core/src/main/java/cn/hutool/core/bean/BeanPath.java b/hutool-core/src/main/java/cn/hutool/core/bean/BeanPath.java index a13280893..b0feb12be 100644 --- a/hutool-core/src/main/java/cn/hutool/core/bean/BeanPath.java +++ b/hutool-core/src/main/java/cn/hutool/core/bean/BeanPath.java @@ -1,6 +1,7 @@ package cn.hutool.core.bean; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.ListUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.map.MapUtil; import cn.hutool.core.text.StrUtil; @@ -10,7 +11,6 @@ import cn.hutool.core.util.CharUtil; import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -271,7 +271,7 @@ public class BeanPath implements Serializable{ } // 不可变List - this.patternParts = Collections.unmodifiableList(localPatternParts); + this.patternParts = ListUtil.view(localPatternParts); } /** diff --git a/hutool-core/src/main/java/cn/hutool/core/classloader/ClassLoaderUtil.java b/hutool-core/src/main/java/cn/hutool/core/classloader/ClassLoaderUtil.java index 3cd047857..c42529bc4 100644 --- a/hutool-core/src/main/java/cn/hutool/core/classloader/ClassLoaderUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/classloader/ClassLoaderUtil.java @@ -3,7 +3,7 @@ package cn.hutool.core.classloader; import cn.hutool.core.convert.BasicType; import cn.hutool.core.exceptions.UtilException; import cn.hutool.core.lang.Assert; -import cn.hutool.core.lang.Pair; +import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.WeakConcurrentMap; import cn.hutool.core.text.CharPool; import cn.hutool.core.text.StrUtil; @@ -50,7 +50,7 @@ public class ClassLoaderUtil { * 原始类型名和其class对应表,例如:int =》 int.class */ private static final Map> PRIMITIVE_TYPE_NAME_MAP = new ConcurrentHashMap<>(32); - private static final WeakConcurrentMap, Class> CLASS_CACHE = new WeakConcurrentMap<>(); + private static final WeakConcurrentMap, Class> CLASS_CACHE = new WeakConcurrentMap<>(); static { final List> primitiveTypes = new ArrayList<>(32); @@ -202,7 +202,7 @@ public class ClassLoaderUtil { if (clazz == null) { final String finalName = name; final ClassLoader finalClassLoader = classLoader; - clazz = CLASS_CACHE.computeIfAbsent(Pair.of(name, classLoader), (key)-> doLoadClass(finalName, finalClassLoader, isInitialized)); + clazz = CLASS_CACHE.computeIfAbsent(MapUtil.entry(name, classLoader), (key)-> doLoadClass(finalName, finalClassLoader, isInitialized)); } return (Class) clazz; } diff --git a/hutool-core/src/main/java/cn/hutool/core/date/chinese/LunarFestival.java b/hutool-core/src/main/java/cn/hutool/core/date/chinese/LunarFestival.java index 71b41f1f3..f5d48c9f6 100644 --- a/hutool-core/src/main/java/cn/hutool/core/date/chinese/LunarFestival.java +++ b/hutool-core/src/main/java/cn/hutool/core/date/chinese/LunarFestival.java @@ -1,9 +1,10 @@ package cn.hutool.core.date.chinese; -import cn.hutool.core.lang.Pair; +import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.TableMap; import java.util.List; +import java.util.Map; /** * 节假日(农历)封装 @@ -15,72 +16,72 @@ public class LunarFestival { //农历节日 *表示放假日 // 来自:https://baike.baidu.com/item/%E4%B8%AD%E5%9B%BD%E4%BC%A0%E7%BB%9F%E8%8A%82%E6%97%A5/396100 - private static final TableMap, String> L_FTV = new TableMap<>(16); + private static final TableMap, String> L_FTV = new TableMap<>(16); static { // 节日 - L_FTV.put(new Pair<>(1, 1), "春节"); - L_FTV.put(new Pair<>(1, 2), "犬日"); - L_FTV.put(new Pair<>(1, 3), "猪日"); - L_FTV.put(new Pair<>(1, 4), "羊日"); - L_FTV.put(new Pair<>(1, 5), "牛日 破五日"); - L_FTV.put(new Pair<>(1, 6), "马日 送穷日"); - L_FTV.put(new Pair<>(1, 7), "人日 人胜节"); - L_FTV.put(new Pair<>(1, 8), "谷日 八仙日"); - L_FTV.put(new Pair<>(1, 9), "天日 九皇会"); - L_FTV.put(new Pair<>(1, 10), "地日 石头生日"); - L_FTV.put(new Pair<>(1, 12), "火日 老鼠娶媳妇日"); - L_FTV.put(new Pair<>(1, 13), "上(试)灯日 关公升天日"); - L_FTV.put(new Pair<>(1, 15), "元宵节 上元节"); - L_FTV.put(new Pair<>(1, 18), "落灯日"); + L_FTV.put(MapUtil.entry(1, 1), "春节"); + L_FTV.put(MapUtil.entry(1, 2), "犬日"); + L_FTV.put(MapUtil.entry(1, 3), "猪日"); + L_FTV.put(MapUtil.entry(1, 4), "羊日"); + L_FTV.put(MapUtil.entry(1, 5), "牛日 破五日"); + L_FTV.put(MapUtil.entry(1, 6), "马日 送穷日"); + L_FTV.put(MapUtil.entry(1, 7), "人日 人胜节"); + L_FTV.put(MapUtil.entry(1, 8), "谷日 八仙日"); + L_FTV.put(MapUtil.entry(1, 9), "天日 九皇会"); + L_FTV.put(MapUtil.entry(1, 10), "地日 石头生日"); + L_FTV.put(MapUtil.entry(1, 12), "火日 老鼠娶媳妇日"); + L_FTV.put(MapUtil.entry(1, 13), "上(试)灯日 关公升天日"); + L_FTV.put(MapUtil.entry(1, 15), "元宵节 上元节"); + L_FTV.put(MapUtil.entry(1, 18), "落灯日"); // 二月 - L_FTV.put(new Pair<>(2, 1), "中和节 太阳生日"); - L_FTV.put(new Pair<>(2, 2), "龙抬头"); - L_FTV.put(new Pair<>(2, 12), "花朝节"); - L_FTV.put(new Pair<>(2, 19), "观世音圣诞"); + L_FTV.put(MapUtil.entry(2, 1), "中和节 太阳生日"); + L_FTV.put(MapUtil.entry(2, 2), "龙抬头"); + L_FTV.put(MapUtil.entry(2, 12), "花朝节"); + L_FTV.put(MapUtil.entry(2, 19), "观世音圣诞"); // 三月 - L_FTV.put(new Pair<>(3, 3), "上巳节"); + L_FTV.put(MapUtil.entry(3, 3), "上巳节"); // 四月 - L_FTV.put(new Pair<>(4, 1), "祭雹神"); - L_FTV.put(new Pair<>(4, 4), "文殊菩萨诞辰"); - L_FTV.put(new Pair<>(4, 8), "佛诞节"); + L_FTV.put(MapUtil.entry(4, 1), "祭雹神"); + L_FTV.put(MapUtil.entry(4, 4), "文殊菩萨诞辰"); + L_FTV.put(MapUtil.entry(4, 8), "佛诞节"); // 五月 - L_FTV.put(new Pair<>(5, 5), "端午节 端阳节"); + L_FTV.put(MapUtil.entry(5, 5), "端午节 端阳节"); // 六月 - L_FTV.put(new Pair<>(6, 6), "晒衣节 姑姑节"); - L_FTV.put(new Pair<>(6, 6), "天贶节"); - L_FTV.put(new Pair<>(6, 24), "彝族火把节"); + L_FTV.put(MapUtil.entry(6, 6), "晒衣节 姑姑节"); + L_FTV.put(MapUtil.entry(6, 6), "天贶节"); + L_FTV.put(MapUtil.entry(6, 24), "彝族火把节"); // 七月 - L_FTV.put(new Pair<>(7, 7), "七夕"); - L_FTV.put(new Pair<>(7, 14), "鬼节(南方)"); - L_FTV.put(new Pair<>(7, 15), "中元节"); - L_FTV.put(new Pair<>(7, 15), "盂兰盆节 中元节"); - L_FTV.put(new Pair<>(7, 30), "地藏节"); + L_FTV.put(MapUtil.entry(7, 7), "七夕"); + L_FTV.put(MapUtil.entry(7, 14), "鬼节(南方)"); + L_FTV.put(MapUtil.entry(7, 15), "中元节"); + L_FTV.put(MapUtil.entry(7, 15), "盂兰盆节 中元节"); + L_FTV.put(MapUtil.entry(7, 30), "地藏节"); // 八月 - L_FTV.put(new Pair<>(8, 15), "中秋节"); + L_FTV.put(MapUtil.entry(8, 15), "中秋节"); // 九月 - L_FTV.put(new Pair<>(9, 9), "重阳节"); + L_FTV.put(MapUtil.entry(9, 9), "重阳节"); // 十月 - L_FTV.put(new Pair<>(10, 1), "祭祖节"); - L_FTV.put(new Pair<>(10, 15), "下元节"); + L_FTV.put(MapUtil.entry(10, 1), "祭祖节"); + L_FTV.put(MapUtil.entry(10, 15), "下元节"); // 十一月 - L_FTV.put(new Pair<>(11, 17), "阿弥陀佛圣诞"); + L_FTV.put(MapUtil.entry(11, 17), "阿弥陀佛圣诞"); // 腊月 - L_FTV.put(new Pair<>(12, 8), "腊八节"); - L_FTV.put(new Pair<>(12, 16), "尾牙"); - L_FTV.put(new Pair<>(12, 23), "小年"); - L_FTV.put(new Pair<>(12, 30), "除夕"); + L_FTV.put(MapUtil.entry(12, 8), "腊八节"); + L_FTV.put(MapUtil.entry(12, 16), "尾牙"); + L_FTV.put(MapUtil.entry(12, 23), "小年"); + L_FTV.put(MapUtil.entry(12, 30), "除夕"); } /** @@ -110,6 +111,6 @@ public class LunarFestival { * @return 获得农历节日 */ public static List getFestivals(final int month, final int day) { - return L_FTV.getValues(new Pair<>(month, day)); + return L_FTV.getValues(MapUtil.entry(month, day)); } } diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/Pair.java b/hutool-core/src/main/java/cn/hutool/core/lang/Pair.java deleted file mode 100644 index 3cf8d75d6..000000000 --- a/hutool-core/src/main/java/cn/hutool/core/lang/Pair.java +++ /dev/null @@ -1,87 +0,0 @@ -package cn.hutool.core.lang; - -import cn.hutool.core.clone.CloneSupport; - -import java.io.Serializable; -import java.util.Objects; - -/** - * 键值对对象,只能在构造时传入键值 - * - * @param 键类型 - * @param 值类型 - * @author looly - * @since 4.1.5 - */ -public class Pair extends CloneSupport> implements Serializable { - private static final long serialVersionUID = 1L; - - protected K key; - protected V value; - - /** - * 构建{@code Pair}对象 - * - * @param 键类型 - * @param 值类型 - * @param key 键 - * @param value 值 - * @return {@code Pair} - * @since 5.4.3 - */ - public static Pair of(final K key, final V value) { - return new Pair<>(key, value); - } - - /** - * 构造 - * - * @param key 键 - * @param value 值 - */ - public Pair(final K key, final V value) { - this.key = key; - this.value = value; - } - - /** - * 获取键 - * - * @return 键 - */ - public K getKey() { - return this.key; - } - - /** - * 获取值 - * - * @return 值 - */ - public V getValue() { - return this.value; - } - - @Override - public String toString() { - return "Pair [key=" + key + ", value=" + value + "]"; - } - - @Override - public boolean equals(final Object o) { - if (this == o) - return true; - if (o instanceof Pair) { - final Pair pair = (Pair) o; - return Objects.equals(getKey(), pair.getKey()) && - Objects.equals(getValue(), pair.getValue()); - } - return false; - } - - @Override - public int hashCode() { - //copy from 1.8 HashMap.Node - return Objects.hashCode(key) ^ Objects.hashCode(value); - } -} diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/mutable/MutableEntry.java b/hutool-core/src/main/java/cn/hutool/core/lang/mutable/MutableEntry.java new file mode 100644 index 000000000..a8a9294d4 --- /dev/null +++ b/hutool-core/src/main/java/cn/hutool/core/lang/mutable/MutableEntry.java @@ -0,0 +1,87 @@ +package cn.hutool.core.lang.mutable; + +import cn.hutool.core.map.AbsEntry; + +import java.io.Serializable; +import java.util.Map; + +/** + * 可变键和值的{@link Map.Entry}实现,可以修改键和值 + * + * @param 键类型 + * @param 值类型 + * @author looly + */ +public class MutableEntry extends AbsEntry implements Mutable>, Serializable { + private static final long serialVersionUID = 1L; + + protected K key; + protected V value; + + /** + * 构造 + * + * @param key 键 + * @param value 值 + */ + public MutableEntry(final K key, final V value) { + this.key = key; + this.value = value; + } + + /** + * 获取键 + * + * @return 键 + */ + @Override + public K getKey() { + return this.key; + } + + /** + * 获取值 + * + * @return 值 + */ + @Override + public V getValue() { + return this.value; + } + + /** + * 设置键 + * + * @param key 新键 + * @return old key + */ + public K setKey(final K key) { + final K oldKey = this.key; + this.key = key; + return oldKey; + } + + /** + * 设置值 + * + * @param value 新值 + * @return old value + */ + @Override + public V setValue(final V value) { + final V oldValue = this.value; + this.value = value; + return oldValue; + } + + @Override + public Map.Entry get() { + return this; + } + + @Override + public void set(final Map.Entry pair) { + this.key = pair.getKey(); + this.value = pair.getValue(); + } +} diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/mutable/MutablePair.java b/hutool-core/src/main/java/cn/hutool/core/lang/mutable/MutablePair.java deleted file mode 100644 index dad8d93b2..000000000 --- a/hutool-core/src/main/java/cn/hutool/core/lang/mutable/MutablePair.java +++ /dev/null @@ -1,57 +0,0 @@ -package cn.hutool.core.lang.mutable; - -import cn.hutool.core.lang.Pair; - -/** - * 可变{@link Pair}实现,可以修改键和值 - * - * @param 键类型 - * @param 值类型 - * @since 5.7.16 - */ -public class MutablePair extends Pair implements Mutable>{ - private static final long serialVersionUID = 1L; - - /** - * 构造 - * - * @param key 键 - * @param value 值 - */ - public MutablePair(final K key, final V value) { - super(key, value); - } - - /** - * 设置键 - * - * @param key 新键 - * @return this - */ - public MutablePair setKey(final K key) { - this.key = key; - return this; - } - - /** - * 设置值 - * - * @param value 新值 - * @return this - */ - public MutablePair setValue(final V value) { - this.value = value; - return this; - } - - @Override - public Pair get() { - return this; - } - - @Override - public void set(final Pair pair) { - this.key = pair.getKey(); - this.value = pair.getValue(); - } -} diff --git a/hutool-core/src/main/java/cn/hutool/core/map/Dict.java b/hutool-core/src/main/java/cn/hutool/core/map/Dict.java index fd9efa55e..37253babf 100755 --- a/hutool-core/src/main/java/cn/hutool/core/map/Dict.java +++ b/hutool-core/src/main/java/cn/hutool/core/map/Dict.java @@ -5,7 +5,6 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.SetUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.Assert; -import cn.hutool.core.lang.Pair; import cn.hutool.core.lang.func.Func0; import cn.hutool.core.lang.func.LambdaUtil; import cn.hutool.core.lang.getter.BasicTypeGetter; @@ -61,16 +60,15 @@ public class Dict extends LinkedHashMap implements BasicTypeGett } /** - * 根据给定的Pair数组创建Dict对象 + * 根据给定的Entry数组创建Dict对象 * * @param pairs 键值对 * @return Dict - * @since 5.4.1 */ @SafeVarargs - public static Dict of(final Pair... pairs) { + public static Dict ofEntries(final Map.Entry... pairs) { final Dict dict = create(); - for (final Pair pair : pairs) { + for (final Map.Entry pair : pairs) { dict.put(pair.getKey(), pair.getValue()); } return dict; diff --git a/hutool-core/src/main/java/cn/hutool/core/map/MapUtil.java b/hutool-core/src/main/java/cn/hutool/core/map/MapUtil.java index 748e96814..a555a9192 100755 --- a/hutool-core/src/main/java/cn/hutool/core/map/MapUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/map/MapUtil.java @@ -1412,7 +1412,7 @@ public class MapUtil { */ public static Map.Entry entry(final K key, final V value, final boolean isImmutable) { return isImmutable ? - new AbstractMap.SimpleEntry<>(key, value) : - new AbstractMap.SimpleImmutableEntry<>(key, value); + new AbstractMap.SimpleImmutableEntry<>(key, value) : + new AbstractMap.SimpleEntry<>(key, value); } } diff --git a/hutool-core/src/test/java/cn/hutool/core/bean/BeanPathTest.java b/hutool-core/src/test/java/cn/hutool/core/bean/BeanPathTest.java index 76b1af97f..dbd28dc97 100644 --- a/hutool-core/src/test/java/cn/hutool/core/bean/BeanPathTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/bean/BeanPathTest.java @@ -1,17 +1,16 @@ package cn.hutool.core.bean; +import cn.hutool.core.lang.test.bean.ExamInfoDict; +import cn.hutool.core.lang.test.bean.UserInfoDict; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import cn.hutool.core.lang.test.bean.ExamInfoDict; -import cn.hutool.core.lang.test.bean.UserInfoDict; - /** * {@link BeanPath} 单元测试 * @@ -103,8 +102,19 @@ public class BeanPathTest { @Test public void getMapTest () { final BeanPath pattern = BeanPath.create("userInfo[id, photoPath]"); - @SuppressWarnings("unchecked") final Map result = (Map)pattern.get(tempMap); + @SuppressWarnings("unchecked") + final Map result = (Map)pattern.get(tempMap); Assert.assertEquals(1, result.get("id")); Assert.assertEquals("yx.mm.com", result.get("photoPath")); } + + @Test + public void getKeyWithDotTest () { + Map dataMap = new HashMap<>(16); + dataMap.put("aa", "value0"); + dataMap.put("aa.bb.cc", "value111111");// key 是类名 格式 带 ' . ' + + final BeanPath pattern = BeanPath.create("'aa.bb.cc'"); + Assert.assertEquals("value111111", pattern.get(dataMap)); + } } diff --git a/hutool-core/src/test/java/cn/hutool/core/map/CaseInsensitiveMapTest.java b/hutool-core/src/test/java/cn/hutool/core/map/CaseInsensitiveMapTest.java index 3a30258a5..8e572f0ca 100644 --- a/hutool-core/src/test/java/cn/hutool/core/map/CaseInsensitiveMapTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/map/CaseInsensitiveMapTest.java @@ -1,9 +1,10 @@ package cn.hutool.core.map; -import cn.hutool.core.lang.Pair; import org.junit.Assert; import org.junit.Test; +import java.util.Map; + public class CaseInsensitiveMapTest { @Test @@ -25,8 +26,8 @@ public class CaseInsensitiveMapTest { @Test public void mergeTest(){ //https://github.com/dromara/hutool/issues/2086 - final Pair b = new Pair<>("a", "value"); - final Pair a = new Pair<>("A", "value"); + final Map.Entry b = MapUtil.entry("a", "value"); + final Map.Entry a = MapUtil.entry("A", "value"); final CaseInsensitiveMap map = new CaseInsensitiveMap<>(); map.merge(b.getKey(), b.getValue(), (A, B) -> A); map.merge(a.getKey(), a.getValue(), (A, B) -> A); diff --git a/hutool-json/src/main/java/cn/hutool/json/InternalJSONUtil.java b/hutool-json/src/main/java/cn/hutool/json/InternalJSONUtil.java index 2c96b479c..9978ac9fd 100755 --- a/hutool-json/src/main/java/cn/hutool/json/InternalJSONUtil.java +++ b/hutool-json/src/main/java/cn/hutool/json/InternalJSONUtil.java @@ -3,7 +3,7 @@ package cn.hutool.json; import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.func.Filter; -import cn.hutool.core.lang.mutable.MutablePair; +import cn.hutool.core.lang.mutable.MutableEntry; import cn.hutool.core.map.CaseInsensitiveLinkedMap; import cn.hutool.core.map.CaseInsensitiveTreeMap; import cn.hutool.core.util.ArrayUtil; @@ -140,7 +140,7 @@ public final class InternalJSONUtil { * @param value 值 * @return JSONObject */ - static JSONObject propertyPut(final JSONObject jsonObject, final Object key, final Object value, final Filter> filter) { + static JSONObject propertyPut(final JSONObject jsonObject, final Object key, final Object value, final Filter> filter) { final String[] path = StrUtil.splitToArray(Convert.toStr(key), CharUtil.DOT); final int last = path.length - 1; JSONObject target = jsonObject; diff --git a/hutool-json/src/main/java/cn/hutool/json/JSONArray.java b/hutool-json/src/main/java/cn/hutool/json/JSONArray.java index b1724fbf9..b536855df 100755 --- a/hutool-json/src/main/java/cn/hutool/json/JSONArray.java +++ b/hutool-json/src/main/java/cn/hutool/json/JSONArray.java @@ -5,7 +5,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.func.Filter; import cn.hutool.core.lang.mutable.Mutable; import cn.hutool.core.lang.mutable.MutableObj; -import cn.hutool.core.lang.mutable.MutablePair; +import cn.hutool.core.lang.mutable.MutableEntry; import cn.hutool.core.text.StrJoiner; import cn.hutool.core.util.ObjUtil; import cn.hutool.json.serialize.JSONWriter; @@ -416,10 +416,10 @@ public class JSONArray implements JSON, JSONGetter, List, Rando * @return 替换的值,即之前的值 * @since 5.8.0 */ - public Object set(final int index, Object element, final Filter> filter) { + public Object set(final int index, Object element, final Filter> filter) { // 添加前置过滤,通过MutablePair实现过滤、修改键值对等 if (null != filter) { - final MutablePair pair = new MutablePair<>(index, element); + final MutableEntry pair = new MutableEntry<>(index, element); if (filter.accept(pair)) { // 使用修改后的值 element = pair.getValue(); @@ -515,7 +515,7 @@ public class JSONArray implements JSON, JSONGetter, List, Rando * @return JSON字符串 * @since 5.7.15 */ - public String toJSONString(final int indentFactor, final Filter> filter) { + public String toJSONString(final int indentFactor, final Filter> filter) { final StringWriter sw = new StringWriter(); synchronized (sw.getBuffer()) { return this.write(sw, indentFactor, 0, filter).toString(); @@ -539,12 +539,12 @@ public class JSONArray implements JSON, JSONGetter, List, Rando * @throws JSONException JSON相关异常 * @since 5.7.15 */ - public Writer write(final Writer writer, final int indentFactor, final int indent, final Filter> filter) throws JSONException { + public Writer write(final Writer writer, final int indentFactor, final int indent, final Filter> filter) throws JSONException { final JSONWriter jsonWriter = JSONWriter.of(writer, indentFactor, indent, config) .beginArray(); CollUtil.forEach(this, (value, index) -> { - final MutablePair pair = new MutablePair<>(index, value); + final MutableEntry pair = new MutableEntry<>(index, value); if (null == filter || filter.accept(pair)) { jsonWriter.writeValue(pair.getValue()); } diff --git a/hutool-json/src/main/java/cn/hutool/json/JSONObject.java b/hutool-json/src/main/java/cn/hutool/json/JSONObject.java index 0a668ca5e..b8a955f72 100755 --- a/hutool-json/src/main/java/cn/hutool/json/JSONObject.java +++ b/hutool-json/src/main/java/cn/hutool/json/JSONObject.java @@ -3,7 +3,7 @@ package cn.hutool.json; import cn.hutool.core.bean.BeanPath; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.func.Filter; -import cn.hutool.core.lang.mutable.MutablePair; +import cn.hutool.core.lang.mutable.MutableEntry; import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapWrapper; import cn.hutool.core.util.ObjUtil; @@ -126,7 +126,7 @@ public class JSONObject extends MapWrapper implements JSON, JSON * @param filter 键值对过滤编辑器,可以通过实现此接口,完成解析前对键值对的过滤和修改操作,{@code null}表示不过滤 * @since 5.8.0 */ - public JSONObject(final Object source, final JSONConfig config, final Filter> filter) { + public JSONObject(final Object source, final JSONConfig config, final Filter> filter) { this(DEFAULT_CAPACITY, config); ObjectMapper.of(source).map(this, filter); } @@ -233,7 +233,7 @@ public class JSONObject extends MapWrapper implements JSON, JSON * @throws JSONException 值是无穷数字抛出此异常 * @since 5.8.0 */ - public JSONObject set(final String key, final Object value, final Filter> filter, final boolean checkDuplicate) throws JSONException { + public JSONObject set(final String key, final Object value, final Filter> filter, final boolean checkDuplicate) throws JSONException { put(key, value, filter, checkDuplicate); return this; } @@ -260,7 +260,7 @@ public class JSONObject extends MapWrapper implements JSON, JSON * @throws JSONException 值是无穷数字、键重复抛出异常 * @since 5.8.0 */ - public JSONObject setOnce(final String key, final Object value, final Filter> filter) throws JSONException { + public JSONObject setOnce(final String key, final Object value, final Filter> filter) throws JSONException { return set(key, value, filter, true); } @@ -378,7 +378,7 @@ public class JSONObject extends MapWrapper implements JSON, JSON * @return JSON字符串 * @since 5.7.15 */ - public String toJSONString(final int indentFactor, final Filter> filter) { + public String toJSONString(final int indentFactor, final Filter> filter) { final StringWriter sw = new StringWriter(); synchronized (sw.getBuffer()) { return this.write(sw, indentFactor, 0, filter).toString(); @@ -402,12 +402,12 @@ public class JSONObject extends MapWrapper implements JSON, JSON * @throws JSONException JSON相关异常 * @since 5.7.15 */ - public Writer write(final Writer writer, final int indentFactor, final int indent, final Filter> filter) throws JSONException { + public Writer write(final Writer writer, final int indentFactor, final int indent, final Filter> filter) throws JSONException { final JSONWriter jsonWriter = JSONWriter.of(writer, indentFactor, indent, config) .beginObj(); this.forEach((key, value) -> { if (null != filter) { - final MutablePair pair = new MutablePair<>(key, value); + final MutableEntry pair = new MutableEntry<>(key, value); if (filter.accept(pair)) { // 使用修改后的键值对 jsonWriter.writeField(pair.getKey(), pair.getValue()); @@ -439,14 +439,14 @@ public class JSONObject extends MapWrapper implements JSON, JSON * @throws JSONException 值是无穷数字抛出此异常 * @since 5.8.0 */ - private Object put(String key, Object value, final Filter> filter, final boolean checkDuplicate) throws JSONException { + private Object put(String key, Object value, final Filter> filter, final boolean checkDuplicate) throws JSONException { if (null == key) { return this; } // 添加前置过滤,通过MutablePair实现过滤、修改键值对等 if (null != filter) { - final MutablePair pair = new MutablePair<>(key, value); + final MutableEntry pair = new MutableEntry<>(key, value); if (filter.accept(pair)) { // 使用修改后的键值对 key = pair.getKey(); diff --git a/hutool-json/src/main/java/cn/hutool/json/JSONParser.java b/hutool-json/src/main/java/cn/hutool/json/JSONParser.java index 6120d76f2..f79c90c5e 100755 --- a/hutool-json/src/main/java/cn/hutool/json/JSONParser.java +++ b/hutool-json/src/main/java/cn/hutool/json/JSONParser.java @@ -2,7 +2,7 @@ package cn.hutool.json; import cn.hutool.core.lang.func.Filter; import cn.hutool.core.lang.mutable.Mutable; -import cn.hutool.core.lang.mutable.MutablePair; +import cn.hutool.core.lang.mutable.MutableEntry; /** * JSON字符串解析器 @@ -41,7 +41,7 @@ public class JSONParser { * @param jsonObject {@link JSONObject} * @param filter 键值对过滤编辑器,可以通过实现此接口,完成解析前对键值对的过滤和修改操作,{@code null}表示不过滤 */ - public void parseTo(final JSONObject jsonObject, final Filter> filter) { + public void parseTo(final JSONObject jsonObject, final Filter> filter) { final JSONTokener tokener = this.tokener; char c; diff --git a/hutool-json/src/main/java/cn/hutool/json/ObjectMapper.java b/hutool-json/src/main/java/cn/hutool/json/ObjectMapper.java index c9d3e556d..9093b53d3 100755 --- a/hutool-json/src/main/java/cn/hutool/json/ObjectMapper.java +++ b/hutool-json/src/main/java/cn/hutool/json/ObjectMapper.java @@ -6,7 +6,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.io.IoUtil; import cn.hutool.core.lang.func.Filter; import cn.hutool.core.lang.mutable.Mutable; -import cn.hutool.core.lang.mutable.MutablePair; +import cn.hutool.core.lang.mutable.MutableEntry; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.text.StrUtil; import cn.hutool.core.reflect.TypeUtil; @@ -67,7 +67,7 @@ public class ObjectMapper { * @param filter 键值对过滤编辑器,可以通过实现此接口,完成解析前对键值对的过滤和修改操作 */ @SuppressWarnings({"rawtypes", "unchecked"}) - public void map(final JSONObject jsonObject, final Filter> filter) { + public void map(final JSONObject jsonObject, final Filter> filter) { final Object source = this.source; if (null == source) { return; @@ -179,7 +179,7 @@ public class ObjectMapper { * @param filter 键值对过滤编辑器,可以通过实现此接口,完成解析前对键值对的过滤和修改操作,{@code null}表示不过滤 * @since 5.3.1 */ - private static void mapFromResourceBundle(final ResourceBundle bundle, final JSONObject jsonObject, final Filter> filter) { + private static void mapFromResourceBundle(final ResourceBundle bundle, final JSONObject jsonObject, final Filter> filter) { final Enumeration keys = bundle.getKeys(); while (keys.hasMoreElements()) { final String key = keys.nextElement(); @@ -196,7 +196,7 @@ public class ObjectMapper { * @param jsonObject {@link JSONObject} * @param filter 键值对过滤编辑器,可以通过实现此接口,完成解析前对键值对的过滤和修改操作,{@code null}表示不过滤 */ - private static void mapFromStr(final CharSequence source, final JSONObject jsonObject, final Filter> filter) { + private static void mapFromStr(final CharSequence source, final JSONObject jsonObject, final Filter> filter) { final String jsonStr = StrUtil.trim(source); if (StrUtil.startWith(jsonStr, '<')) { // 可能为XML @@ -226,7 +226,7 @@ public class ObjectMapper { * @param jsonObject {@link JSONObject} * @param filter 键值对过滤编辑器,可以通过实现此接口,完成解析前对键值对的过滤和修改操作 */ - private static void mapFromTokener(final JSONTokener x, final JSONObject jsonObject, final Filter> filter) { + private static void mapFromTokener(final JSONTokener x, final JSONObject jsonObject, final Filter> filter) { JSONParser.of(x).parseTo(jsonObject, filter); }