当前位置: 首页 > news >正文

Java数组Arrays操作全攻略

Arrays类的概述

Java中的Arrays类位于java.util包中,提供了一系列静态方法用于操作数组(如排序、搜索、填充、比较等)。这些方法适用于基本类型数组和对象数组。


常用成员方法及代码示例

排序(sort)

对数组进行升序排序(基本类型采用快速排序,对象类型采用归并排序)。

int[] numbers = {5, 2, 9, 1, 5};
Arrays.sort(numbers); // 排序后:[1, 2, 5, 5, 9]
System.out.println(Arrays.toString(numbers));

对对象数组排序(需实现Comparable接口或传入Comparator):

String[] names = {"John", "Alice", "Bob"};
Arrays.sort(names); // 按字典序排序
System.out.println(Arrays.toString(names));

二分查找(binarySearch)

前提:数组必须已排序。返回找到元素的索引(未找到时返回负数)。

int[] sortedArr = {1, 3, 5, 7, 9};
int index = Arrays.binarySearch(sortedArr, 5); // 返回2
System.out.println("Index of 5: " + index);

填充(fill)

将数组的所有元素设置为指定值。

char[] chars = new char[5];
Arrays.fill(chars, 'A'); // ['A', 'A', 'A', 'A', 'A']
System.out.println(Arrays.toString(chars));

数组转字符串(toString)

格式化数组为可读字符串。

double[] doubles = {1.1, 2.2, 3.3};
System.out.println(Arrays.toString(doubles)); // [1.1, 2.2, 3.3]

比较数组(equals)

判断两个数组内容是否相同(包括元素顺序)。

int[] arr1 = {1, 2, 3};
int[] arr2 = {1, 2, 3};
System.out.println(Arrays.equals(arr1, arr2)); // true

拷贝数组(copyOf/copyOfRange)

copyOf:从原数组的起始位置拷贝指定长度。
copyOfRange:拷贝指定范围(左闭右开)。

int[] original = {10, 20, 30, 40, 50};
int[] copy1 = Arrays.copyOf(original, 3); // [10, 20, 30]
int[] copy2 = Arrays.copyOfRange(original, 1, 4); // [20, 30, 40]

深度操作(deepEquals/deepToString)

用于多维数组或嵌套对象数组的比较和打印。

int[][] matrix1 = {{1, 2}, {3, 4}};
int[][] matrix2 = {{1, 2}, {3, 4}};
System.out.println(Arrays.deepEquals(matrix1, matrix2)); // true
System.out.println(Arrays.deepToString(matrix1)); // [[1, 2], [3, 4]]


高级应用示例

将数组转换为列表(asList):

String[] fruits = {"Apple", "Banana", "Orange"};
List<String> list = Arrays.asList(fruits); // 返回固定大小的列表
System.out.println(list);

注意:此方法返回的列表不支持增删操作(会抛出UnsupportedOperationException)。

并行排序(parallelSort):

int[] largeArray = new int[100000];
// 使用多线程并行排序(大数据量时效率更高)
Arrays.parallelSort(largeArray);

通过灵活组合这些方法,可以高效处理数组相关的常见任务。

相关文章:

  • 从实验室到产业:IndexTTS 在六大核心场景的落地实践
  • 清晰明亮风格人像街拍Lr调色教程,手机滤镜PS+Lightroom预设下载!
  • 【数据篇】持久化核心:整合 JPA/MyBatis 实现优雅的数据库操作
  • 编写整洁的python之装饰器
  • Linux 内存管理实战精讲:核心原理与面试常考点全解析
  • Linux操作系统共享Windows操作系统的文件
  • 论文解析:一文弄懂U-Net(图像分割)!
  • 企业数据孤立的常见表现及解决方法
  • 《MLB美职棒》勇士队排名·棒球1号位
  • 高并发内存池的轻量级模拟-细节处理与优化部分
  • 【配置篇】告别硬编码:多环境配置、@ConfigurationProperties与配置中心初探
  • ESP32开发之WS2812B控制
  • 【前端】js Map集合的使用方法
  • 【深度解析】以太坊中的挖矿难度调整机制:从动态调节到“冰河时代”的倒计时
  • 从鲲鹏到蝴蝶:庄子《逍遥游》的终极自由指南
  • 【后端】单点登录
  • 第1课 SiC MOSFET与 Si IGBT 基本参数对比
  • AI——DeepSeek+LangChain+streamlit 实现智能汽车维修服务
  • 依赖注入(Dependency Injection)
  • Hilt vs Dagger2:Android 依赖注入框架对比
  • 响应式建站工具/夸克浏览器网页版入口
  • seo联盟怎么赚钱/台州seo快速排名
  • 个人做淘宝客网站不能备案吗/百度明星人气榜
  • amazeui做网站行吗/公司优化是什么意思
  • 赢展网站建设/推广普通话手抄报内容简短
  • 青少年活动中心网站建设依据/seo是谁