20个方法接住数组常用动作,求和以long返回不溢出

简介: 这是一个专为Java数组操作设计的轻量工具类,支持判空/非空、基本类型与包装类互转、包含判断、多数组合并、原地反转、极值/求和/均值计算及可读字符串输出,求和以long返回防溢出,JDK 17+可用,开箱即用。

📋 目录

一、工具类功能

数组的常用动作一个类接住:判空、基本类型与包装类型互转、包含判断、多数组合并、原地反转、极值与求和均值、可读字符串输出,求和以 long 返回不会溢出。

二、所需环境

JDK 17或以上

三、方法与调用示例(按需调用)

🔢 方法序号:1

🎯 方法用途:

  • 判对象数组是否为空,null 与长度为 0 都算空
  • 入参可能是 null 数组的接口做前置校验时用

🧩 方法定义:public static boolean isEmpty(Object[] array)

🗣️ 入参解释:public static boolean isEmpty(对象数组)

📤 返回值解释:boolean,为 null 或没有元素返回 true

💡 边界口径:

  • 对 null 安全,不抛异常,与其余方法「null 数组就报错」的口径不同
  • 有元素即为 false,不管元素本身是不是 null
  • 与 isEmpty(int[]) 重载同名,直接写 isEmpty(null) 编译期会报「引用不明确」,要显式转型

🧪 方法示例:

  • isEmpty((Object[]) null) 拿到 true
  • 空数组与装满 null 的数组分别拿到 true 和 false

🔢 方法序号:2

🎯 方法用途:

  • 判 int[] 是否为空,基本类型数组版
  • 统计、批处理里拿着 int[] 流转时的判空入口

🧩 方法定义:public static boolean isEmpty(int[] array)

🗣️ 入参解释:public static boolean isEmpty(int数组)

📤 返回值解释:boolean,为 null 或长度为 0 返回 true

💡 边界口径:

  • 与对象数组版语义相同,只是不接收对象数组
  • new int[0] 与 null 都算空

🧪 方法示例:

  • isEmpty(new int[0]) 拿到 true,isEmpty(null) 转型后也是 true
  • 五个元素的数组拿到 false

🔢 方法序号:3

🎯 方法用途:

  • 判对象数组非空,写正向条件时少一个取反
  • 断言「必须有数据」的入口用它比 !isEmpty 更直读

🧩 方法定义:public static boolean isNotEmpty(Object[] array)

🗣️ 入参解释:public static boolean isNotEmpty(对象数组)

📤 返回值解释:boolean,非 null 且有元素返回 true

💡 边界口径:

  • 与 isEmpty(Object[]) 完全相反,null 返回 false
  • 同样对 null 安全

🧪 方法示例:

  • isNotEmpty(values) 拿到 true,与判空结果相反

🔢 方法序号:4

🎯 方法用途:

  • 判 int[] 非空,基本类型数组版
  • 批量 id、分数数组这类场景的正向判断

🧩 方法定义:public static boolean isNotEmpty(int[] array)

🗣️ 入参解释:public static boolean isNotEmpty(int数组)

📤 返回值解释:boolean,非 null 且长度大于 0 返回 true

💡 边界口径:

  • 与 isEmpty(int[]) 相反,null 返回 false
  • 全 0 的数组算非空,长度才是唯一依据

🧪 方法示例:

  • isNotEmpty(scores) 拿到 true
  • isNotEmpty(new int[0]) 拿到 false,长度为零就是空

🔢 方法序号:5

🎯 方法用途:

  • 把 int[] 打成 Integer[],元素一一对应
  • 要喂给只收对象数组的 API、或者要当 Arrays.asList 参数时用

🧩 方法定义:public static Integer[] toBoxed(int[] array)

🗣️ 入参解释:public static Integer[] toBoxed(int数组)

📤 返回值解释:Integer[],与原数组等长的装箱数组

💡 边界口径:

  • 不做零值处理,位置严格对应
  • 数组为 null 抛 IllegalArgumentException,消息是「数组不能为null」
  • 返回新数组,与原数组不共享

🧪 方法示例:

  • toBoxed(new int[]{2, 5, 1, 7, 3}) 拿到 [2, 5, 1, 7, 3]
  • toBoxed(null) 抛 数组不能为null

🔢 方法序号:6

🎯 方法用途:

  • 把 long[] 打成 Long[]
  • 金额分值、时间戳数组要交给泛型集合时用

🧩 方法定义:public static Long[] toBoxed(long[] array)

🗣️ 入参解释:public static Long[] toBoxed(long数组)

📤 返回值解释:Long[],装箱后的新数组

💡 边界口径:

  • 与 int 版同一口径,元素一一对应
  • 数组为 null 抛 IllegalArgumentException

🧪 方法示例:

  • toBoxed(new long[]{1000, 20000, 350}) 拿到 [1000, 20000, 350]

🔢 方法序号:7

🎯 方法用途:

  • 把 double[] 打成 Double[]
  • 比例、评分这类浮点数组要进泛型容器时用

🧩 方法定义:public static Double[] toBoxed(double[] array)

🗣️ 入参解释:public static Double[] toBoxed(double数组)

📤 返回值解释:Double[],装箱后的新数组

💡 边界口径:

  • 元素一一对应,0.0 与 -0.0 都按原值装箱
  • 数组为 null 抛 IllegalArgumentException

🧪 方法示例:

  • toBoxed(new double[]{0.85, 1.0, 0.0}) 拿到 [0.85, 1.0, 0.0]

🔢 方法序号:8

🎯 方法用途:

  • 把 Integer[] 拆成 int[],null 元素补成 0
  • 数组打平、要把包装数组交给按原始类型算的接口时用

🧩 方法定义:public static int[] toPrimitive(Integer[] array)

🗣️ 入参解释:public static int[] toPrimitive(Integer数组)

📤 返回值解释:int[],拆箱后的新数组

💡 边界口径:

  • null 元素转成该类型零值,这里不会抛 NPE
  • 需要区分「缺失」与「零值」时别用这个方法,保留包装类型或走 OptionalInt
  • 数组本身为 null 抛 IllegalArgumentException

🧪 方法示例:

  • toPrimitive(new Integer[]{1001, 1002, null, 1003}) 拿到 [1001, 1002, 0, 1003],第 3 个 null 被补成 0
  • toPrimitive((Integer[]) null) 抛 数组不能为null

🔢 方法序号:9

🎯 方法用途:

  • 把 Long[] 拆成 long[],null 元素补 0L
  • 时间戳、分值数组打平时用

🧩 方法定义:public static long[] toPrimitive(Long[] array)

🗣️ 入参解释:public static long[] toPrimitive(Long数组)

📤 返回值解释:long[],拆箱后的新数组

💡 边界口径:

  • 零值是 0L,与 int 版同一套约定
  • 数组为 null 抛 IllegalArgumentException

🧪 方法示例:

  • toPrimitive(boxedLongs) 拿到 [1000, 20000, 350]

🔢 方法序号:10

🎯 方法用途:

  • 把 Double[] 拆成 double[],null 元素补 0.0
  • 浮点数组要交给统计、算法接口时用

🧩 方法定义:public static double[] toPrimitive(Double[] array)

🗣️ 入参解释:public static double[] toPrimitive(Double数组)

📤 返回值解释:double[],拆箱后的新数组

💡 边界口径:

  • 零值是 0.0,NaN 元素会原样保留
  • 数组为 null 抛 IllegalArgumentException

🧪 方法示例:

  • toPrimitive(boxedDoubles) 拿到 [0.85, 1.0, 0.0]

🔢 方法序号:11

🎯 方法用途:

  • 在对象数组里按 equals 找元素,允许传不同类型
  • 小数组判存在、不想先转 Set 时用

🧩 方法定义:public static <T> boolean contains(T[] array, Object element)

🗣️ 入参解释:public static <T> boolean contains(对象数组, 待找元素)

📤 返回值解释:boolean,找到返回 true

💡 边界口径:

  • 比较用 element.equals(数组元素),所以 null 也能作为待找元素
  • 不做类型强转,类型对不上只会判 false
  • 数组为 null 抛 IllegalArgumentException

🧪 方法示例:

  • contains(ids, 1002) 拿到 true,按 Integer 的 equals 命中
  • contains(ids, null) 拿到 true,数组里那个 null 位被认出来了
  • 找不存在的元素拿到 false,数组传 null 抛 数组不能为null

🔢 方法序号:12

🎯 方法用途:

  • 在 int[] 里按值找元素,不产生装箱开销
  • 打分、状态码这类小数组的存在性判断用这一版

🧩 方法定义:public static boolean contains(int[] array, int value)

🗣️ 入参解释:public static boolean contains(int数组, 值)

📤 返回值解释:boolean,找到返回 true

💡 边界口径:

  • 逐个比较基本类型值,不涉及 equals
  • 数组为 null 抛 IllegalArgumentException
  • 线性查找,数组大了该换集合

🧪 方法示例:

  • contains(scores, 7) 拿到 true
  • contains(scores, 9) 拿到 false

🔢 方法序号:13

🎯 方法用途:

  • 把多数组合并成一个新数组,不与任何入参共享
  • 分页结果拼接、多来源标签合并这类动作用它

🧩 方法定义:public static <T> T[] concat(T[]... arrays)

🗣️ 入参解释:public static <T> T[] concat(若干数组)

📤 返回值解释:T[],合并后的新数组

💡 边界口径:

  • 组件类型取自第一个非空入参数组,全是空数组时取自 varargs 的组件类型
  • 混合父子类型数组时,后续元素可能与组件类型不兼容而抛 ArrayStoreException
  • 数组项为 null 抛 IllegalArgumentException,消息点出是第几个
  • 一个数组都不给同样抛异常

🧪 方法示例:

  • concat(first, second) 拿到 长度 3,内容 [1, 2, 3]
  • 第一个入参是空数组时,结果组件类型拿到 Integer
  • 合并列表里有一项是 null,抛 待合并数组第2个为null
  • 一个数组都没给,抛 待合并数组至少需要提供一个数组

🔢 方法序号:14

🎯 方法用途:

  • 原地反转 int[],不新建数组
  • 要省内存、且这个数组归当前流程独用时用

🧩 方法定义:public static void reverse(int[] array)

🗣️ 入参解释:public static void reverse(int数组)

📤 返回值解释:void,改动直接落在入参数组上

💡 边界口径:

  • 原地修改,调用方持有的引用会看到同一份改动
  • 数组为 null 抛 IllegalArgumentException
  • 长度 0 或 1 时什么都不做

🧪 方法示例:

  • reverse(scores) 之后原数组拿到 [3, 7, 1, 5, 2],反转前是 [2, 5, 1, 7, 3]

🔢 方法序号:15

🎯 方法用途:

  • 原地反转对象数组,泛型版
  • 倒序展示、消息列表反转这类不改元素内容的场合用

🧩 方法定义:public static <T> void reverse(T[] array)

🗣️ 入参解释:public static <T> void reverse(对象数组)

📤 返回值解释:void,入参数组被就地改完

💡 边界口径:

  • 只动位置不动元素,null 元素照样跟着换位
  • 数组为 null 抛 IllegalArgumentException
  • 与其他线程共享同一数组时,顺序要调用方自己保证

🧪 方法示例:

  • reverse(ids) 之后拿到 [1003, null, 1002, 1001],null 元素也参与了换位

🔢 方法序号:16

🎯 方法用途:

  • 求 int[] 的最大值
  • 评分、库存这类数组取峰值时用,空数组不当 0 处理而是直接报错

🧩 方法定义:public static int max(int[] array)

🗣️ 入参解释:public static int max(int数组)

📤 返回值解释:int,数组里的最大值

💡 边界口径:

  • 空数组抛 IllegalArgumentException,不会静默返回 0 或 Integer.MIN_VALUE
  • 数组为 null 同样抛异常
  • 只有 int[] 一套,long[]、double[] 请自己走 LongStream、DoubleStream

🧪 方法示例:

  • max(scores) 拿到 7
  • max(new int[0]) 抛 数组长度必须大于0

🔢 方法序号:17

🎯 方法用途:

  • 求 int[] 的最小值
  • 价格、延迟数组取谷底时用

🧩 方法定义:public static int min(int[] array)

🗣️ 入参解释:public static int min(int数组)

📤 返回值解释:int,数组里的最小值

💡 边界口径:

  • 空数组抛 IllegalArgumentException,与 max 一致
  • 全负数数组给的是最负的那个
  • 同样只提供 int[] 版本

🧪 方法示例:

  • min(scores) 拿到 1
  • min(new int[0]) 抛 数组长度必须大于0

🔢 方法序号:18

🎯 方法用途:

  • 求 int[] 的和,以 long 返回
  • 上千个 int 相加不想溢出成负数时用这一版

🧩 方法定义:public static long sum(int[] array)

🗣️ 入参解释:public static long sum(int数组)

📤 返回值解释:long,累加结果

💡 边界口径:

  • 累加在 long 上做,两个 Integer.MAX_VALUE 相加也得到正数
  • 空数组返回 0,与 max、min 直接报错不同
  • 需要回到 int 自己确认量级

🧪 方法示例:

  • sum(scores) 拿到 18
  • sum(new int[]{Integer.MAX_VALUE, Integer.MAX_VALUE}) 拿到 4294967294,没溢出成负数
  • sum(new int[0]) 拿到 0

🔢 方法序号:19

🎯 方法用途:

  • 求 int[] 的平均值,以 double 返回且不做四舍五入
  • 平均分、均值指标这类要小数精度的场景用

🧩 方法定义:public static double average(int[] array)

🗣️ 入参解释:public static double average(int数组)

📤 返回值解释:double,平均值,保留小数

💡 边界口径:

  • 空数组抛 IllegalArgumentException,不会返回 0 或 NaN
  • 先求和再除,求和走 long,不会因为元素多而溢出
  • 要展示几位小数由调用方自己格式化

🧪 方法示例:

  • average(scores) 拿到 3.6,五个数相加除以 5 没被截成 3
  • average(new int[0]) 抛 数组长度必须大于0

🔢 方法序号:20

🎯 方法用途:

  • 把 int[] 转成 [a, b, c] 形态的可读字符串
  • 写日志、拼告警文案时用,null 数组也有明确输出

🧩 方法定义:public static String toString(int[] array)

🗣️ 入参解释:public static String toString(int数组)

📤 返回值解释:String,带方括号与逗号的数组文本

💡 边界口径:

  • 数组为 null 返回字面量 null,不抛异常
  • 输出内容与 Arrays.toString(int[]) 一致,是文本不是 JSON
  • 空数组给 []

🧪 方法示例:

  • toString(scores) 拿到 [2, 5, 1, 7, 3]
  • toString(null) 拿到字面量 null

四、工具类源码(可直接复制)

📦 源码文件

相关文章
|
7天前
|
JavaScript API iOS开发
DeepSeek Harness下载、安装、配置一篇搞定(2026整理,送常用插件)
DeepSeek Harness(DSH)是DeepSeek于2026年开源的MIT协议AI Agent框架,支持插件化组装模型、工具、沙箱与UI,兼容主流大模型。本文提供免Node.js的桌面端安装包(Win/macOS),含详细图文教程及热门插件推荐。
3452 33
|
7天前
|
Linux 开发工具 iOS开发
Codex保姆级教程(下载+安装+登录+使用,含所有版本,2026最新)
Codex是OpenAI推出的开源AI编程智能体,本地运行,可理解整个代码库,支持自然语言指令改代码、执行命令、跑测试、修Bug,兼容Win/macOS/Linux。(239字)
|
2天前
|
云安全 人工智能 安全
|
8天前
|
iOS开发 Docker MacOS
【2026实测】Docker Desktop下载、安装、汉化、配置教程(附官网安装包)
Docker Desktop 是 Docker 官方推出的桌面容器管理工具,集成引擎、CLI、图形界面与 Kubernetes,支持 Win/macOS/Linux。2026 最新版 4.88.1 强化 ARM 原生运行、镜像加速及资源可视化,附中文汉化与国内镜像配置指南。
1534 5
|
云安全 安全 网络安全
|
8天前
|
安全 算法 定位技术
《高性价比人生指南》完整原版:普通人用最少的资源,过好这一生的底层逻辑~How To Live Better
📖《高性价比人生指南》是一份基于实证、拒绝焦虑的生存手册,倡导以“人生时薪”为视角,重新计算时间、金钱与精力的成本与收益。它不承诺逆袭,只教人算清账:省下的钱若耗掉时间便亏;买体验比买物品更值;睡眠是最高杠杆的健康投资;关系贵在情绪价值而非表面热络;学习重在改变行为而非自我安慰。核心理念:用低成本、高回报的微小行动,换取长期的选择权——不是成为谁,而是掌控自己人生的主动权。
|
21天前
|
人工智能 API 开发工具
DeepSeek Harness 神插件:白嫖 13 家大厂模型
`dsh-our-free-model` 是 DeepSeek Harness 神级插件:零配置、零API Key、零账号,聚合13家大厂免费模型(含DeepSeek V4.1 Flash、Kimi K3等),支持本地网关、用量看板与自动降级,真正实现“白嫖即用”。
3698 54
|
13天前
|
人工智能 JSON Linux
【保姆级】ComfyUI部署教程(下载+安装+配置+工作流,2026最新)
ComfyUI 是一款开源节点式AI生成工具,支持图像、视频、音频及3D内容创作。通过拖拽连线组合模型加载、提示词、采样等节点,构建可复用、易修改的工作流,兼容SD1.5、SDXL、Flux、Qwen Image等主流模型。