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

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);

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

http://www.xdnf.cn/news/12925.html

相关文章:

  • 设计模式-状态模式
  • 从零手写Java版本的LSM Tree (二):KeyValue 数据结构
  • Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
  • Linux部署私有文件管理系统MinIO
  • iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
  • Spring Boot 3+:现代Java应用开发的新标杆
  • Python任务调度模型
  • python如何将word的doc另存为docx
  • [C++错误经验]case语句跳过变量初始化
  • 基于uni-app for HarmonyOS5 的跨平台组件库开发指南,以及组件示例
  • 井云科技|智能体变现新路径:从开发到盈利的关键跨越
  • 热烈祝贺埃文科技正式加入可信数据空间发展联盟
  • AI 边缘计算网关推动各行业的数字化转型和智能化升级
  • HTML 标签
  • 【MySQL基础】MySQL表操作全面指南:从创建到管理的深度解析
  • OPENCV的cvtColor和putText的讲解
  • 年度峰会上,抖音依靠人工智能和搜索功能吸引广告主
  • 2025最全TS手写题之partial/Omit/Pick/Exclude/Readonly/Required
  • CSS | transition 和 transform的用处和区别
  • 计算机视觉一些定义解析
  • C# winform教程(二)----checkbox
  • 深度解析:etcd 在 Milvus 向量数据库中的关键作用
  • AWSLambda之设置时区
  • Visual Studio Code 扩展
  • Python自动化机器学习平台库之mindsdb使用详解
  • goreplay
  • 分类预测 | Matlab基于AOA-VMD-BiLSTM故障诊断分类预测
  • 路灯电费高还管理难?智慧照明系统让城市用电下降40%
  • python可视化:俄乌战争时间线关键节点与深层原因
  • Html实现图片上传/裁剪/马赛克/压缩/旋转/缩放