行业资讯 2025年08月6日
0 收藏 0 点赞 714 浏览 1686 个字
摘要 :

文章目录 1.使用流API进行转换 1.1. 基元数组到对象数组的转换 1.2. 对象数组到基元数组的转换 2.使用Apache Common的ArrayUtils进行转换 2.1. 基元数组到对象数组的……




  • 1.使用流API进行转换
  • 2.使用Apache Common的ArrayUtils进行转换
    • 2.1. 基元数组到对象数组的转换
    • 2.2. 对象数组到基元数组的转换
  • 3.结论

学习将基元数组(int、long 或 double)转换为对象数组(Integer、Double 或 Long),反之亦然。例如,我们将把 int[] 转换为 Integer[],然后再将 Integer[] 转换回 int[]。

请注意,所有的技巧都遵循相同的转换过程逻辑,即遍历现有数组,将当前项转换为对象(或基元类型),然后添加到新数组中。下面讨论的API添加了一些语法糖,以使代码更具可读性。

1.使用流API进行转换

我们需要使用 Stream.toArray() 方法,该方法返回包含给定流中的项的数组。我们需要在收集到新数组之前转换项目类型。

1.1. 基元数组到对象数组的转换

Java程序将 int[] 转换为 Integer[]。请注意,默认情况下,toArray() 方法返回 Object[],因此指定生成函数 Integer[]::new 很重要。

int[] primitiveArray = new int[]{0, 1, 2, 3, 4, 5};
Integer[] outputArray = Arrays.stream(primitiveArray)
        .boxed()
        .toArray(Integer[]::new);

1.2. 对象数组到基元数组的转换

Java程序将 Integer[] 转换为 int[]。为了将 Integer 对象转换为 int 值,我们使用了 stream.mapToInt() 函数。该方法返回一个 IntStream,其中包含与数组中的 Integer 对象相对应的 int 值。

如果数组中有空项,则此方法将抛出 NullPointerException。

Integer[] objectArray = new Integer[]{0, 1, 2, 3, 4, 5};
int[] outputArray = Arrays.stream(objectArray)
        .mapToInt(Integer::intValue)
        .toArray();

2.使用Apache Common的ArrayUtils进行转换

ArrayUtils 类具有许多静态实用程序方法,用于在单个语句中执行常见任务。它提高了代码的可读性,因此容易维护这样的代码。

这两种方法都在内部使用for循环来遍历原始数组并填充新数组,因此在性能上与使用Stream API相比,你不会看到太大的差异。

在 Maven 仓库中查找Common’s Lang的最新版本。

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.12.0</version>
</dependency>

2.1. 基元数组到对象数组的转换

ArrayUtils.toObject() 方法将基元类型的数组转换为对象数组。如果输入数组为空,则该方法返回null。

int[] primitiveArray = new int[]{0, 1, 2, 3, 4, 5};
Integer[] outputArray = ArrayUtils.toObject(primitiveArray);

2.2. 对象数组到基元数组的转换

ArrayUtils.toPrimitive() 方法将对象数组转换为相应的基元类型数组。如果数组内容为空,则此方法将抛出NullPointerException。

Integer[] objectArray = new Integer[]{0, 1, 2, 3, 4, 5};
int[] outputArray = ArrayUtils.toPrimitive(objectArray);

3.结论

在这个简单的Java教程中,我们学习了如何将基元数组转换为对象数组,并将对象数组转换为基元数组。我们学会了如何使用Java Streams API和Apache Common的ArrayUtils类来实现这些操作。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/9298.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号