Arrays 工具类常用方法
候选人小陈在字节面试时被问到:
"Java 中的 Arrays 工具类,你会用哪些方法?"
小陈说:"排序用 Arrays.sort(),转字符串用 Arrays.toString()。"
面试官点点头:"那你知道 Arrays.sort() 有几种重载吗?分别用在什么场景?二分查找呢?并行排序呢?"
小陈开始支支吾吾...
【面试官心理】 这道题考查的是候选人对 Java 标准库的掌握程度。Arrays 是开发中离不开的工具类,连它有哪些方法都不熟悉,说明写的代码很可能是在重复造轮子。
一、Arrays 工具类概述
java.util.Arrays 是 Java 提供的数组操作工具类,所有方法都是 static 的。
二、排序方法 🔴
2.1 基本排序 sort()
2.2 范围排序 sort(a, fromIndex, toIndex)
2.3 自定义排序 sort(T[] a, Comparator<? super T> c)
2.4 并行排序 parallelSort()
💡
parallelSort() 适用于大数据量(至少上万个元素),在小数据量上反而可能更慢。
三、二分查找 🔴
二分查找的返回值规则:
四、批量赋值 fill()
五、数组比较 🔴
5.1 equals() vs deepEquals()
💡
对于一维数组用 equals(),对于多维数组用 deepEquals()。
六、转字符串 🔴
6.1 toString() vs deepToString()
⚠️
Arrays.toString() 不支持多维数组!必须用 Arrays.deepToString()。
七、数组复制 🔴
7.1 copyOf() 和 copyOfRange()
八、方法速查表
九、面试官追问 🔴
面试官:"Arrays.sort() 用的是什么排序算法?"
标准回答:
- 基础类型(
int[]):双轴快速排序(Dual-Pivot Quicksort) - 对象类型(
Object[]):归并排序(TimSort)——稳定排序
面试官追问:"Arrays.asList() 有什么坑?"