当前位置: 首页 > 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);

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

http://www.dtcms.com/a/241321.html

相关文章:

  • 从实验室到产业: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 依赖注入框架对比
  • python正则表达式
  • DAY 44 训练
  • 卷积核、FIR滤波器与LTI系统——一回事
  • ​​企业大模型服务合规指南:深度解析备案与登记制度​​
  • 第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
  • CppCon 2015 学习:Time Programming Fundamentals
  • UML 2.0 图的细分类别及其应用
  • 【大厂机试题解法笔记】食堂供餐
  • 如何删除linux空的文件夹
  • deepbayes lecture2:变分推断