java.util.Arrays 详解

排序

  • sort(int[] a): 对指定 int 型数组按数字升序进行排序。
  • sort(Object[] a): 对指定对象数组进行排序(对象的类必须实现 Comparable 接口)。
  • sort(T[] a, Comparator<? super T> c): 使用指定的比较器对数组进行排序。
  • sort(int[] a, int fromIndex, int toIndex): 对数组指定范围的元素进行排序。
java 复制代码
int[] array = {5, 3, 8, 4, 2};  
Arrays.sort(array);  
System.out.println(Arrays.toString(array)); // 输出 [2, 3, 4, 5, 8]

搜索

  • binarySearch(int[] a, int key): 使用二分搜索算法在已排序的数组中搜索指定的值。
  • binarySearch(Object[] a, Object key): 类似上面的方法,但用于对象数组。
  • binarySearch(T[] a, int fromIndex, int toIndex, T key): 在指定范围的已排序数组中搜索值。
java 复制代码
int[] sortedArray = {1, 2, 3, 4, 5};  
int index = Arrays.binarySearch(sortedArray, 3);  
System.out.println(index); // 输出 2,因为 3 在索引 2 的位置

比较

  • equals(int[] a, int[] a2): 如果两个数组在长度和元素上都相等,则返回 true。
  • deepEquals(Object[] a1, Object[] a2): 如果两个对象数组在长度和元素上都相等(使用 equals() 方法比较元素),则返回 true。
  • compare(byte[] a, byte[] b): 按字典顺序比较两个字节数组。
java 复制代码
int[] array1 = {1, 2, 3};  
int[] array2 = {1, 2, 3};  
boolean isEqual = Arrays.equals(array1, array2);  
System.out.println(isEqual); // 输出 true

填充

  • fill(int[] a, int val): 将指定值分配给指定 int 型数组的每个元素。
  • fill(Object[] a, Object val): 类似上面的方法,但用于对象数组。
  • fill(int[] a, int fromIndex, int toIndex, int val): 将指定范围的数组元素设置为指定值。
java 复制代码
int[] array = new int[5];  
Arrays.fill(array, 8);  
System.out.println(Arrays.toString(array)); // 输出 [8, 8, 8, 8, 8]

复制

  • copyOf(int[] original, int newLength): 复制指定的数组,截断或填充以获取所需长度的新数组。
  • copyOfRange(int[] original, int from, int to): 将指定数组的指定范围复制到新数组。
java 复制代码
int[] original = {1, 2, 3, 4, 5};  
int[] copied = Arrays.copyOf(original, 7); // 长度为 7 的新数组,多余的位置默认为 0  
System.out.println(Arrays.toString(copied)); // 输出 [1, 2, 3, 4, 5, 0, 0]

转换为字符串

  • toString(int[] a): 返回指定数组内容的字符串表示形式。
  • deepToString(Object[] a): 返回对象数组的字符串表示形式,其中数组的每个元素都是其 toString() 方法的返回值。
java 复制代码
int[] array = {1, 2, 3};  
String str = Arrays.toString(array);  
System.out.println(str); // 输出 [1, 2, 3]

其他实用方法

asList方法

注意:返回的列表大小是固定的,不支持 addaddAll 操作。

java 复制代码
List<Integer> list = Arrays.asList(1, 2, 3);  
System.out.println(list); // 输出 [1, 2, 3]  
// 以下操作会抛出 UnsupportedOperationException  
// list.add(4); // 不支持

hashCode方法

通常不需要直接调用此方法,但在某些自定义对象需要重写 hashCode 方法时,可能会作为参考。

java 复制代码
int[] array = {1, 2, 3};  
int hashCode = Arrays.hashCode(array);  
System.out.println(hashCode); // 输出数组内容的哈希码

setAll方法

该方法用于通过给定的生成器函数为数组的每个索引生成新的值。

java 复制代码
int[] array = new int[5];  
Arrays.setAll(array, i -> i * 2); // 使用 lambda 表达式为每个索引生成值  
System.out.println(Arrays.toString(array)); // 输出 [0, 2, 4, 6, 8]
相关推荐
信奥卷王26 分钟前
[GESP202503 五级] 原根判断
java·数据结构·算法
小咕聊编程34 分钟前
【含文档+源码】基于SpringBoot的过滤协同算法之网上服装商城设计与实现
java·spring boot·后端
Zz_waiting.35 分钟前
Spring 原理
java·spring·spring自动管理
瓯雅爱分享5 小时前
Java+Vue构建的采购招投标一体化管理系统,集成招标计划、投标审核、在线竞价、中标公示及合同跟踪功能,附完整源码,助力企业实现采购全流程自动化与规范化
java·mysql·vue·软件工程·源代码管理
mit6.8247 小时前
[C# starter-kit] 命令/查询职责分离CQRS | MediatR |
java·数据库·c#
诸神缄默不语7 小时前
Maven用户设置文件(settings.xml)配置指南
xml·java·maven
任子菲阳7 小时前
学Java第三十四天-----抽象类和抽象方法
java·开发语言
学Linux的语莫8 小时前
机器学习数据处理
java·算法·机器学习
找不到、了8 小时前
JVM的即时编译JIT的介绍
java·jvm
西瓜er8 小时前
JAVA:Spring Boot 集成 FFmpeg 实现多媒体处理
java·spring boot·ffmpeg