From 7d1438b6655dd9b216430de95cf949c42655b386 Mon Sep 17 00:00:00 2001
From: Looly
Date: Sat, 21 Dec 2024 11:30:02 +0800
Subject: [PATCH] fix code
---
.../hutool/core/cache/impl/FIFOCache.java | 4 +-
.../hutool/core/cache/impl/StampedCache.java | 3 +-
.../hutool/core/collection/CollUtil.java | 182 +++++++++---------
.../hutool/core/collection/iter/IterUtil.java | 19 ++
.../org/dromara/hutool/core/map/MapUtil.java | 21 ++
5 files changed, 139 insertions(+), 90 deletions(-)
diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/cache/impl/FIFOCache.java b/hutool-core/src/main/java/org/dromara/hutool/core/cache/impl/FIFOCache.java
index 487e91908..888d5e297 100644
--- a/hutool-core/src/main/java/org/dromara/hutool/core/cache/impl/FIFOCache.java
+++ b/hutool-core/src/main/java/org/dromara/hutool/core/cache/impl/FIFOCache.java
@@ -28,11 +28,13 @@ import java.util.LinkedHashMap;
* 缺点:不灵活,不能保证最常用的对象总是被保留
*
*
+ * 由于使用LinkedHashMap,并发读也有问题,因此只能使用悲观锁,不能使用读写锁
+ *
* @param 键类型
* @param 值类型
* @author Looly
*/
-public class FIFOCache extends StampedCache {
+public class FIFOCache extends ReentrantCache {
private static final long serialVersionUID = 1L;
/**
diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/cache/impl/StampedCache.java b/hutool-core/src/main/java/org/dromara/hutool/core/cache/impl/StampedCache.java
index 015aa44d7..83a67dc94 100644
--- a/hutool-core/src/main/java/org/dromara/hutool/core/cache/impl/StampedCache.java
+++ b/hutool-core/src/main/java/org/dromara/hutool/core/cache/impl/StampedCache.java
@@ -22,7 +22,8 @@ import java.util.Iterator;
import java.util.concurrent.locks.StampedLock;
/**
- * 使用{@link StampedLock}保护的缓存,使用读写乐观锁
+ * 使用{@link StampedLock}保护的缓存,使用读写乐观锁
+ * 使用乐观锁有效的提高的缓存性能,但是无法避免脏读问题
*
* @param 键类型
* @param 值类型
diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/collection/CollUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/collection/CollUtil.java
index 3631d5f53..a2ad0551d 100644
--- a/hutool-core/src/main/java/org/dromara/hutool/core/collection/CollUtil.java
+++ b/hutool-core/src/main/java/org/dromara/hutool/core/collection/CollUtil.java
@@ -64,7 +64,7 @@ import java.util.stream.Collectors;
*/
public class CollUtil {
- // ---------------------------------------------------------------------- isEmpty
+ // region ----- isEmpty
/**
* 集合是否为空
@@ -174,8 +174,9 @@ public class CollUtil {
public static List emptyIfNull(final List list) {
return ObjUtil.defaultIfNull(list, Collections.emptyList());
}
+ // endregion
- // ---------------------------------------------------------------------- isNotEmpty
+ // region ----- isNotEmpty
/**
* 集合是否为非空
@@ -247,6 +248,7 @@ public class CollUtil {
public static boolean isNotEmpty(final Map, ?> map) {
return MapUtil.isNotEmpty(map);
}
+ // endregion
/**
* 去重集合
@@ -578,6 +580,7 @@ public class CollUtil {
return IterUtil.countMap(IterUtil.getIter(collection));
}
+ // region ----- join
/**
* 以 conjunction 为分隔符将集合转换为字符串
*
@@ -627,6 +630,7 @@ public class CollUtil {
}
return IterUtil.join(iterable.iterator(), conjunction, prefix, suffix);
}
+ // endregion
/**
* 切取部分数据
@@ -807,6 +811,7 @@ public class CollUtil {
return list;
}
+ // region ----- sub
/**
* 截取列表的部分
*
@@ -869,6 +874,7 @@ public class CollUtil {
final List list = collection instanceof List ? (List) collection : ListUtil.of(collection);
return sub(list, start, end, step);
}
+ // endregion
/**
* 对集合按照指定长度分段,每一个段为单独的集合,返回这个集合的列表
@@ -955,6 +961,7 @@ public class CollUtil {
return edit(collection, t -> predicate.test(t) ? t : null);
}
+ // region ----- remove
/**
* 去掉集合中的多个元素,此方法直接修改原集合
*
@@ -1074,6 +1081,7 @@ public class CollUtil {
removeWithAddIf(targetCollection, removed, predicate);
return removed;
}
+ // endregion
/**
* 通过func自定义一个规则,此规则将原集合中的元素转换成新的元素,生成新的列表返回
@@ -1117,6 +1125,7 @@ public class CollUtil {
return StreamUtil.of(collection).map(mapper).collect(Collectors.toList());
}
+ // region ----- getFieldValues
/**
* 获取给定Bean列表中指定字段名对应字段值的列表
* 列表元素支持Bean与Map
@@ -1165,6 +1174,7 @@ public class CollUtil {
final Collection