Compare commits

...

3 Commits

Author SHA1 Message Date
Looly
97e56c48eb ListUtil增加zip方法(pr#4052@Github) 2025-10-18 19:39:53 +08:00
Golden Looly
ddd3eb34f6 Merge pull request #4102 from liunainaibuheliulianniunai/v5-dev
增加zip函数,可以将两个列表中的元素一一配对并返回一个新的结果列表
2025-10-18 19:24:34 +08:00
刘奶奶不喝榴莲牛奶
4a88a565bf 增加zip函数,可以将两个列表中的元素一一配对并返回一个新的结果列表 2025-10-18 12:52:49 +08:00
5 changed files with 34 additions and 5 deletions

View File

@@ -1,8 +1,10 @@
# 🚀Changelog
-------------------------------------------------------------------------------------------------------------
# 5.8.42(2025-10-12)
# 5.8.42(2025-10-18)
### 🐣新特性
* 【core 】 `ListUtil`增加`zip`方法pr#4052@Github
### 🐞Bug修复

View File

@@ -11,6 +11,7 @@ import cn.hutool.core.util.PageUtil;
import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.BiFunction;
import java.util.function.Consumer;
/**
@@ -721,4 +722,32 @@ public class ListUtil {
}
return list;
}
/**
* 将两个列表的元素按照索引一一配对,通过指定的函数进行合并,返回一个新的结果列表。
* 新列表的长度将以两个输入列表中较短的那个为准。
*
* @param <A> 第一个列表的元素类型
* @param <B> 第二个列表的元素类型
* @param <R> 结果列表的元素类型
* @param listA 第一个列表
* @param listB 第二个列表
* @param zipper 合并函数接收来自listA和listB的两个元素返回一个结果元素
* @return 合并后的新列表
* @since 5.8.42
*/
public static <A, B, R> List<R> zip(List<A> listA, List<B> listB, BiFunction<A, B, R> zipper) {
if (CollUtil.isEmpty(listA) || CollUtil.isEmpty(listB)) {
return new ArrayList<>();
}
Assert.notNull(zipper, "Zipper function must not be null");
final int size = Math.min(listA.size(), listB.size());
final List<R> result = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
result.add(zipper.apply(listA.get(i), listB.get(i)));
}
return result;
}
}

View File

@@ -18,8 +18,6 @@
<properties>
<Automatic-Module-Name>cn.hutool.crypto</Automatic-Module-Name>
<!-- versions -->
<bouncycastle.version>1.78.1</bouncycastle.version>
</properties>
<dependencies>

View File

@@ -20,8 +20,7 @@
<Automatic-Module-Name>cn.hutool.jwt</Automatic-Module-Name>
<!-- versions -->
<bouncycastle.version>1.78.1</bouncycastle.version>
<jjwt.version>0.12.5</jjwt.version>
<jjwt.version>0.13.0</jjwt.version>
</properties>
<dependencies>

View File

@@ -48,6 +48,7 @@
<compile.version>8</compile.version>
<junit.version>5.10.3</junit.version>
<lombok.version>1.18.34</lombok.version>
<bouncycastle.version>1.82</bouncycastle.version>
</properties>
<dependencies>