diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6c772c812..905612610 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,10 +3,11 @@
-------------------------------------------------------------------------------------------------------------
-# 5.7.15 (2021-10-11)
+# 5.7.15 (2021-10-14)
### 🐣新特性
* 【db 】 Db.quietSetAutoCommit增加判空(issue#I4D75B@Gitee)
+* 【core 】 增加RingIndexUtil(pr#438@Gitee)
*
### 🐞Bug修复
* 【core 】 修复CollUtil.isEqualList两个null返回错误问题(issue#1885@Github)
diff --git a/hutool-core/src/main/java/cn/hutool/core/collection/RingIndexUtil.java b/hutool-core/src/main/java/cn/hutool/core/collection/RingIndexUtil.java
index 31c9ebc7a..b997b1428 100644
--- a/hutool-core/src/main/java/cn/hutool/core/collection/RingIndexUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/collection/RingIndexUtil.java
@@ -13,26 +13,6 @@ import java.util.concurrent.atomic.AtomicLong;
*/
public class RingIndexUtil {
- /**
- * 通过cas操作 实现对指定值内的回环累加
- *
- * @param object 集合
- *
- * - Collection - the collection size
- *
- Map - the map size
- *
- Array - the array size
- *
- Iterator - the number of elements remaining in the iterator
- *
- Enumeration - the number of elements remaining in the enumeration
- *
- * @param atomicLong 原子操作类
- * @return 索引位置
- */
- public static long ringNextLongByObj(Object object, AtomicLong atomicLong) {
- Assert.notNull(object);
- int modulo = CollUtil.size(object);
- return ringNextLong(modulo, atomicLong);
- }
-
/**
* 通过cas操作 实现对指定值内的回环累加
*
@@ -63,7 +43,7 @@ public class RingIndexUtil {
public static int ringNextInt(int modulo, AtomicInteger atomicInteger) {
Assert.notNull(atomicInteger);
Assert.isTrue(modulo > 0);
- if (modulo == 1) {
+ if (modulo <= 1) {
return 0;
}
for (; ; ) {
@@ -85,7 +65,7 @@ public class RingIndexUtil {
public static long ringNextLong(long modulo, AtomicLong atomicLong) {
Assert.notNull(atomicLong);
Assert.isTrue(modulo > 0);
- if (modulo == 1) {
+ if (modulo <= 1) {
return 0;
}
for (; ; ) {
@@ -96,5 +76,4 @@ public class RingIndexUtil {
}
}
}
-
}
diff --git a/hutool-core/src/test/java/cn/hutool/core/collection/RingIndexUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/collection/RingIndexUtilTest.java
index 7ea1df65e..4ff70cdd1 100644
--- a/hutool-core/src/test/java/cn/hutool/core/collection/RingIndexUtilTest.java
+++ b/hutool-core/src/test/java/cn/hutool/core/collection/RingIndexUtilTest.java
@@ -1,39 +1,22 @@
package cn.hutool.core.collection;
+import cn.hutool.core.lang.Assert;
import cn.hutool.core.thread.ThreadUtil;
import org.junit.Test;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicLong;
/**
* 集合索引环形获取工具类测试类
*
* @author ZhouChuGang
- * @version 1.0
- * @project hutool
- * @date 2021/10/13 18:47
*/
public class RingIndexUtilTest {
private final List strList = Arrays.asList("0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
- /**
- * 观察输出的打印为不重复的
- */
- @Test
- public void ringNextLongByObjTest() {
- final AtomicLong atomicLong = new AtomicLong();
- // 开启并发测试,每个线程获取到的元素都是唯一的
- ThreadUtil.concurrencyTest(strList.size(), () -> {
- final long index = RingIndexUtil.ringNextLongByObj(strList, atomicLong);
- final String s = strList.get((int) index);
- System.out.println(s);
- });
- }
-
/**
* 观察输出的打印为不重复的
*/
@@ -44,7 +27,7 @@ public class RingIndexUtilTest {
ThreadUtil.concurrencyTest(strList.size(), () -> {
final int index = RingIndexUtil.ringNextIntByObj(strList, atomicInteger);
final String s = strList.get(index);
- System.out.println(s);
+ Assert.notNull(s);
});
}