From 683aeb2c7fb8d07e91b4540d281b406d0fd8c127 Mon Sep 17 00:00:00 2001 From: minglipro Date: Sun, 21 Sep 2025 14:37:22 +0800 Subject: [PATCH] =?UTF-8?q?```=20feat(stream):=20=E4=BC=98=E5=8C=96=20Supe?= =?UTF-8?q?rStream=20=E7=9A=84=20toArray=20=E6=96=B9=E6=B3=95=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0-=20=E8=B0=83=E6=95=B4=20toArray=20=E6=96=B9=E6=B3=95?= =?UTF-8?q?=EF=BC=8C=E6=94=AF=E6=8C=81=E4=BC=A0=E5=85=A5=20Class=20?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E4=BB=A5=E6=AD=A3=E7=A1=AE=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E6=B3=9B=E5=9E=8B=E6=95=B0=E7=BB=84=20-=20=E5=8E=9F=E6=97=A0?= =?UTF-8?q?=E5=8F=82=20toArray=20=E6=96=B9=E6=B3=95=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=20Object[]=EF=BC=8C=E9=81=BF=E5=85=8D?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E8=BD=AC=E6=8D=A2=E5=BC=82=E5=B8=B8=20-=20?= =?UTF-8?q?=E7=A7=BB=E9=99=A4=E5=AF=B9=20ForEach=20=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E7=B1=BB=E7=9A=84=E4=BE=9D=E8=B5=96=20-=20=E6=8F=90=E5=8D=87?= =?UTF-8?q?=E6=B5=81=E5=A4=84=E7=90=86=E4=B8=AD=E6=95=B0=E7=BB=84=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2=E7=9A=84=E7=81=B5=E6=B4=BB=E6=80=A7=E4=B8=8E=E5=AE=89?= =?UTF-8?q?=E5=85=A8=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ``` ``` feat(collection): 改进 toArray 工具方法支持泛型数组创建 - 新增基于 reified 泛型的 toArray 扩展方法,自动推断数组类型 - 添加带 Class 参数的 toArray 重载方法,用于明确指定元素类型 - 处理空列表时直接返回空数组,避免后续操作异常 ``` ``` build(gradle): 升级 dokka 插件版本并更新项目依赖- 将 org.jetbrains.dokka 插件升级至 2.1.0-Beta 版本 - 添加 jna5.17.0 依赖用于本地库调用支持 - 引入 mybatis-plus-core 3.0.1 编译依赖 - 更新项目版本号从 4.1.7 至 4.1.8 ``` --- build.gradle.kts | 6 ++++-- gradle.properties | 4 ++-- .../mingliqiye/utils/stream/SuperStream.java | 20 ++++++++----------- .../mingliqiye/utils/collection/Collection.kt | 13 +++++++++--- src/main/kotlin/com/mingliqiye/utils/io/IO.kt | 12 +++++------ 5 files changed, 30 insertions(+), 25 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 6caf27a..494b3c5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -16,7 +16,7 @@ * ProjectName mingli-utils * ModuleName mingli-utils * CurrentFile build.gradle.kts - * LastUpdate 2025-09-20 14:16:07 + * LastUpdate 2025-09-20 22:30:57 * UpdateUser MingLiPro */ @@ -30,7 +30,7 @@ plugins { `java-library` `maven-publish` kotlin("jvm") version "2.2.20" - id("org.jetbrains.dokka") version "2.0.0" + id("org.jetbrains.dokka") version "2.1.0-Beta" } val GROUPSID = project.properties["GROUPSID"] as String val VERSIONS = project.properties["VERSIONS"] as String @@ -77,7 +77,9 @@ dependencies { compileOnly("com.google.code.gson:gson:2.13.1") compileOnly("org.mybatis:mybatis:3.5.19") compileOnly("com.alibaba.fastjson2:fastjson2:2.0.58") + compileOnly("com.baomidou:mybatis-plus-core:3.0.1") + compileOnly("net.java.dev.jna:jna:5.17.0") } diff --git a/gradle.properties b/gradle.properties index 18a795f..779033d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,13 +16,13 @@ # ProjectName mingli-utils # ModuleName mingli-utils # CurrentFile gradle.properties -# LastUpdate 2025-09-20 14:22:07 +# LastUpdate 2025-09-20 16:03:35 # UpdateUser MingLiPro # JDKVERSIONS=1.8 GROUPSID=com.mingliqiye.utils ARTIFACTID=mingli-utils -VERSIONS=4.1.7 +VERSIONS=4.1.8 signing.keyId=B22AA93B signing.password= signing.secretKeyRingFile=secret.gpg diff --git a/src/main/java/com/mingliqiye/utils/stream/SuperStream.java b/src/main/java/com/mingliqiye/utils/stream/SuperStream.java index d268101..1d71c41 100644 --- a/src/main/java/com/mingliqiye/utils/stream/SuperStream.java +++ b/src/main/java/com/mingliqiye/utils/stream/SuperStream.java @@ -16,14 +16,13 @@ * ProjectName mingli-utils * ModuleName mingli-utils.main * CurrentFile SuperStream.java - * LastUpdate 2025-09-20 13:24:35 + * LastUpdate 2025-09-21 14:22:13 * UpdateUser MingLiPro */ package com.mingliqiye.utils.stream; import com.mingliqiye.utils.collection.Collections; -import com.mingliqiye.utils.foreach.ForEach; import com.mingliqiye.utils.functions.P1Function; import com.mingliqiye.utils.functions.P2Function; import org.jetbrains.annotations.NotNull; @@ -887,16 +886,13 @@ public class SuperStream implements Stream { */ @NotNull @SuppressWarnings("unchecked") - public T[] toArray() { - List list = toAList(); - if (list.isEmpty()) { - throw new StreamEmptyException("Stream is empty"); - } - T[] items = (T[]) Array.newInstance(list.get(0).getClass(), list.size()); - ForEach.forEach(list, (v, i) -> { - items[i] = v; - }); - return items; + public T[] toArray(Class clazz) { + return stream.toArray(i -> (T[]) Array.newInstance(clazz, i)); + } + + @NotNull + public Object[] toArray() { + return stream.toArray(); } /** diff --git a/src/main/kotlin/com/mingliqiye/utils/collection/Collection.kt b/src/main/kotlin/com/mingliqiye/utils/collection/Collection.kt index b0f0b0f..9025922 100644 --- a/src/main/kotlin/com/mingliqiye/utils/collection/Collection.kt +++ b/src/main/kotlin/com/mingliqiye/utils/collection/Collection.kt @@ -16,7 +16,7 @@ * ProjectName mingli-utils * ModuleName mingli-utils.main * CurrentFile Collection.kt - * LastUpdate 2025-09-20 14:03:46 + * LastUpdate 2025-09-21 14:36:57 * UpdateUser MingLiPro */ @@ -980,7 +980,14 @@ fun toArray(list: List): CharArray { * @param list 输入的 List * @return 转换后的数组 */ -fun toArray(list: List): Array { +inline fun toArray(list: List): Array { + if (list.isEmpty()) + return arrayOf() return SuperStream.of(list) - .toArray() + .toArray(T::class.java) +} + +fun toArray(list: List, clazz: Class): Array { + return SuperStream.of(list) + .toArray(clazz) } diff --git a/src/main/kotlin/com/mingliqiye/utils/io/IO.kt b/src/main/kotlin/com/mingliqiye/utils/io/IO.kt index c5fe70f..e288ee3 100644 --- a/src/main/kotlin/com/mingliqiye/utils/io/IO.kt +++ b/src/main/kotlin/com/mingliqiye/utils/io/IO.kt @@ -16,7 +16,7 @@ * ProjectName mingli-utils * ModuleName mingli-utils.main * CurrentFile IO.kt - * LastUpdate 2025-09-20 11:46:19 + * LastUpdate 2025-09-20 16:03:14 * UpdateUser MingLiPro */ @@ -33,22 +33,22 @@ class IO { @JvmStatic fun print(vararg args: Any?) { - print(" ", *args) + printA(" ", *args) } @JvmStatic fun println(vararg args: Any?) { - println(" ", *args) + printlnA(" ", *args) } @JvmStatic - fun println(sp: String = " ", vararg args: Any?) { - print(" ", *args) + fun printlnA(sp: String, vararg args: Any?) { + printA(" ", *args) kotlin.io.println() } @JvmStatic - fun print(sp: String = " ", vararg args: Any?) { + fun printA(sp: String = "", vararg args: Any?) { if (args.isEmpty()) { kotlin.io.println() }