Java ArrayUtils数组工具类使用详解
前言
各位数组操控师们好!今天给大家带来的是Apache Commons Lang3中的ArrayUtils工具类。这个工具就像数组界的"孙悟空",能让你的数组随心所欲地变大、变小、变长、变短,再也不用对着原生数组的"死板"叹气了!
一、为什么需要ArrayUtils
原生Java数组就像一块"铁板":
- 长度固定?改不了!
- 想加个元素?重写一个!
- 找元素位置?自己循环!
而ArrayUtils就是给你的数组装上"变形按钮":
// 原始人写法
String[] oldArray = {"Java", "Python"};
String[] newArray = new String[oldArray.length + 1];
System.arraycopy(oldArray, 0, newArray, 0, oldArray.length);
newArray[newArray.length - 1] = "Go";
// ArrayUtils现代写法
String[] languages = ArrayUtils.add(new String[]{"Java", "Python"}, "Go");二、ArrayUtils的"七十二变"
1. 数组扩容术(添加元素)
// 基本用法
int[] numbers = {1, 2, 3};
numbers = ArrayUtils.add(numbers, 4); // [1, 2, 3, 4]
// 指定位置插入
numbers = ArrayUtils.insert(2, numbers, 99); // [1, 2, 99, 3, 4]2. 数组缩身法(删除元素)
// 按索引删除
String[] fruits = {"Apple", "Banana", "Orange"};
fruits = ArrayUtils.remove(fruits, 1); // ["Apple", "Orange"]
// 按元素删除(只删第一个匹配项)
fruits = ArrayUtils.removeElement(fruits, "Orange"); // ["Apple"]3. 数组查找功
// 查找元素位置
int[] primes = {2, 3, 5, 7, 11};
int index = ArrayUtils.indexOf(primes, 5); // 2
// 检查包含关系
boolean hasEven = ArrayUtils.contains(primes, 2); // true4. 数组分身术(子数组)
// 截取子数组 int[] subArray = ArrayUtils.subarray(primes, 1, 4); // [3, 5, 7] // 克隆数组(深拷贝) int[] clone = ArrayUtils.clone(primes);
5. 数组变身大法(类型转换)
// 包装类型转换 Integer[] boxed = ArrayUtils.toObject(primes); // 基本类型转换 int[] unboxed = ArrayUtils.toPrimitive(boxed);
三、高级"仙术"展示
1. 数组合并
String[] frontend = {"HTML", "CSS"};
String[] backend = {"Java", "Python"};
String[] fullstack = ArrayUtils.addAll(frontend, backend);
// ["HTML", "CSS", "Java", "Python"]2. 数组反转
ArrayUtils.reverse(fullstack); // ["Python", "Java", "CSS", "HTML"]
3. 数组填充
int[] empty = new int[5]; ArrayUtils.fill(empty, 42); // [42, 42, 42, 42, 42]
4. 空数组安全
// 安全处理null数组 String[] maybeNull = null; String[] safeArray = ArrayUtils.nullToEmpty(maybeNull); // 返回空数组而非null
四、ArrayUtils的"修仙指南"
性能提示:频繁操作考虑先用List再转数组
null安全:所有方法都处理null输入
多维数组:支持多维数组操作(如indexOf多维查找)
特殊比较:提供equals()方法比较数组内容
五、与传统方法的"功力对比"
| 操作 | 原生写法代码量 | ArrayUtils代码量 |
|---|---|---|
| 添加元素 | 5-7行 | 1行 |
| 删除元素 | 需要循环 | 1行 |
| 查找元素 | 需要循环 | 1行 |
| 数组合并 | System.arraycopy | 1行 |
六、现代"御剑飞行"方案
// Java 8 Stream方案(适合复杂操作)
String[] filtered = Arrays.stream(fullstack)
.filter(s -> !s.equals("CSS"))
.toArray(String[]::new);
// 与Collections配合使用
List<String> list = new ArrayList<>(Arrays.asList(fullstack));
list.add("JavaScript");
String[] updated = list.toArray(new String[0]);七、总结
ArrayUtils就像是:
- 数组扩容的"金箍棒"🔨
- 元素操作的"筋斗云"
- ☁️数组查找的"火眼金睛"👀
- null安全的"避雷针"⚡
记住数组操作的真理:“直接操作数组就像用牙啃椰子,用对工具才是王道!”
最后送上数组操作速查表:
| 需求 | ArrayUtils方法 | 示例 |
|---|---|---|
| 添加元素 | add() / addAll() | add(array, element) |
| 删除元素 | remove() / removeElement() | remove(array, index) |
| 查找元素 | indexOf() / contains() | indexOf(array, value) |
| 子数组 | subarray() | subarray(array, start, end) |
| 空数组转换 | nullToEmpty() | nullToEmpty(null) |
| 数组反转 | reverse() | reverse(array) |
以上就是Java ArrayUtils数组工具类使用详解的详细内容,更多关于Java ArrayUtils的资料请关注脚本之家其它相关文章!
相关文章
使用Spring初始化加载InitializingBean()方法
这篇文章主要介绍了使用Spring初始化加载InitializingBean()方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-01-01
SpringBoot快速整合SpringSecurity的详细步骤(新手都会!)
日 Spring Security 是针对Spring项目的安全框架,也是Spring Boot底层安全模块默认的技术选型,他可以实现强大的Web安全控制,下面这篇文章主要给大家介绍了关于SpringBoot快速整合SpringSecurity的详细步骤,需要的朋友可以参考下2023-03-03
Java中StringBuffer和StringBuilder区别
这篇文章主要介绍了Java中StringBuffer和StringBuilder区别,本文只介绍了它们之间的核心区别,需要的朋友可以参考下2015-06-06
提示:Decompiled.class file,bytecode version如何解决
在处理Decompiled.classfile和bytecodeversion问题时,通过修改Maven配置文件,添加阿里云镜像并去掉默认镜像,解决了下载源的问题,同时,检查并修改了依赖版本,确保了问题的解决2024-12-12


最新评论