Java中Arrays类的常用方法

本文深入讲解Java中Arrays类的多种实用方法,包括数组填充、排序、查找、复制及比较等功能,帮助开发者掌握数组操作技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java中Arrays类的常用方法

Arrays类位于 java.util 包中,主要包含了操作数组的各种方法。

    import java.util.Arrays;

Arrays.fill(); //填充数组

    int[] arr = new int[5];//新建一个大小为5的数组
	Arrays.fill(arr,4);//给所有值赋值4
	String str = Arrays.toString(arr); // Arrays类的toString()方法能将数组中的内容全部打印出来
	System.out.print(str);
	//输出:[4, 4, 4, 4, 4]
	int[] arr = new int[5];//新建一个大小为5的数组
	Arrays.fill(arr, 2,4,6);//给第2位(0开始)到第4位(不包括)赋值6
	String str = Arrays.toString(arr); // Arrays类的toString()方法能将数组中的内容全部打印出来
	System.out.print(str);
	//输出:[0, 0, 6, 6, 0]

Arrays.sort(); //数组排序

Arrays类有一个静态方法sort,利用这个方法可传入要排序的数组进去排序,因为传入的是一个数组的引用,所以排序完成的结果也通过这个引用来更改数组。

1.数字排序

    int[] intArray = new int[] { 4, 1, 3, -23 };
    Arrays.sort(intArray);
    //输出: [-23, 1, 3, 4]

2.字符串排序,先大写后小写

    String[] strArray = new String[] { “z”, “a”, “C” };
    Arrays.sort(strArray);
    //输出: [C, a, z]

3.严格按字母表顺序排序,也就是忽略大小写排序 Case-insensitive sort

    Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER);
    //输出: [a, C, z]

4.反向排序, Reverse-order sort

    Arrays.sort(strArray, Collections.reverseOrder());
    //输出:[z, a, C]

5.忽略大小写反向排序 Case-insensitive reverse-order sort

    Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER);
    Collections.reverse(Arrays.asList(strArray));
    //输出: [z, C, a]

6.选择数组指定位置进行排序

    int[] arr = {3,2,1,5,4};
    Arrays.sort(arr,0,3);//给第0位(0开始)到第3位(不包括)排序
    String str = Arrays.toString(arr); // Arrays类的toString()方法能将数组中的内容全部打印出来
    System.out.print(str);
    //输出:[1, 2, 3, 5, 4]

Arrays.toString(); //将数组中的内容全部打印出来

    int[] arr = {3,2,1,5,4};
    System.out.print(arr);//直接将数组打印输出
    //输出:[I@7852e922 (数组的地址)

	String str = Arrays.toString(arr); // Arrays类的toString()方法能将数组中的内容全部打印出来
	//System.out.print(str);
	//输出:[3, 2, 1, 5, 4]

Arrays.equals(); //比较数组元素是否相等

	int[] arr1 = {1,2,3};
	int[] arr2 = {1,2,3};
	System.out.println(Arrays.equals(arr1,arr2));
	//输出:true
	//如果是arr1.equals(arr2),则返回false,因为equals比较的是两个对象的地址,不是里面的数,而Arrays.equals重写了equals,所以,这里能比较元素是否相等。

Arrays.binarySearch(); //二分查找法找指定元素的索引值(下标)

数组一定是排好序的,否则会出错。找到元素,只会返回最后一个位置

	int[] arr = {10,20,30,40,50};
	System.out.println(Arrays.binarySearch(arr, 30));
    //输出:2 (下标索引值从0开始)
	int[] arr = {10,20,30,40,50};
	System.out.println(Arrays.binarySearch(arr, 36));
	//输出:-4 (找不到元素,返回-x,从-1开始数,如题,返回-4)
	int []arr = {10,20,30,40,50};
	System.out.println(Arrays.binarySearch(arr, 0,3,30));
	//输出:2 (从0到3位(不包括)找30,找到了,在第2位,返回2)
    int []arr = {10,20,30,40,50};
    System.out.println(Arrays.binarySearch(arr, 0,3,40));
    //输出:-4 (从0到3位(不包括)找40,找不到,从-1开始数,返回-4)

Arrays.copeOf() 和Arrays.copeOfRange(); //截取数组

	int[] arr = {10,20,30,40,50};
	int[] arr1 = Arrays.copyOf(arr, 3);
	String str = Arrays.toString(arr1); // Arrays类的toString()方法能将数组中的内容全部打印出来
	System.out.print(str);
	//输出:[10, 20, 30] (截取arr数组的3个元素赋值给新数组arr1)
	int []arr = {10,20,30,40,50};
	int []arr1 = Arrays.copyOfRange(arr,1,3);
	String str = Arrays.toString(arr1); // Arrays类的toString()方法能将数组中的内容全部打印出来
	System.out.print(str);
	//输出:[20, 30] (从第1位(0开始)截取到第3位(不包括))
### Java 中 `Arrays` 的使用方法和常见功能 #### 1. 概述 `Arrays` 是 Java 标准库中的一个工具,位于 `java.util` 包中。它提供了丰富的静态方法来支持数组的操作,包括排序、搜索、比较、填充以及将数组转换为列表等功能[^1]。 --- #### 2. 主要功能详解 ##### (1) 排序 (`sort`) `Arrays.sort()` 方法可以对数组进行升序排列。对于基本数据型的数组,会按照自然顺序排序;而对于对象数组,则需要实现 `Comparable` 或者通过传递自定义的 `Comparator` 来指定排序逻辑[^3]。 示例代码如下: ```java import java.util.Arrays; public class SortExample { public static void main(String[] args) { int[] numbers = {5, 2, 8, 1}; Arrays.sort(numbers); // 对整型数组按升序排序 System.out.println(Arrays.toString(numbers)); // 输出 [1, 2, 5, 8] String[] strings = {"banana", "apple", "orange"}; Arrays.sort(strings); // 字符串数组按字典顺序排序 System.out.println(Arrays.toString(strings)); // 输出 [apple, banana, orange] } } ``` --- ##### (2) 查找 (`binarySearch`) 在已排序的数组上执行二分查找操作。如果找到目标值则返回其索引位置,否则返回负数表示未找到的位置范围[^2]。 注意:只有当数组已经经过排序时才能正确使用此函数! 例子展示如何利用 binarySearch 进行快速定位元素所在下标或者判断是否存在某特定项。 ```java import java.util.Arrays; public class BinarySearchExample { public static void main(String[] args) { int[] sortedArray = {1, 3, 5, 7, 9}; int index = Arrays.binarySearch(sortedArray, 5); if(index >= 0){ System.out.println("Element found at index "+index+"."); }else{ System.out.println("Element not present."); } // 测试不存在的情况 index = Arrays.binarySearch(sortedArray, 4); if(index >= 0){ System.out.println("Element found at index "+index+"."); }else{ System.out.println("Element not present with insertion point as "+(-index-1)+"."); } } } ``` --- ##### (3) 数组内容对比 (`equals`) 用来检测两个相同型的一维或多维数组的内容是否完全一致。即使它们引用不同的内存地址,只要内部存储的数据一一对应相等就会判定两者相等。 下面是一个简单的演示程序说明 equals 的用途。 ```java import java.util.Arrays; public class EqualsExample { public static void main(String[] args) { char[] array1 = {'a', 'b'}; char[] array2 = {'a', 'b'}; boolean result = Arrays.equals(array1, array2); if(result){ System.out.println("The two arrays are equal."); } else { System.out.println("The two arrays are NOT equal."); } } } ``` --- ##### (4) 将数组转成字符串形式 (`toString`, `deepToString`) 为了便于调试打印整个一维或二维甚至更高维度的数组内容到控制台输出流里去观察具体数值分布情况^。 这里给出一段示范 deepToString 处理嵌套结构的例子。 ```java import java.util.Arrays; public class ToStringExample { public static void main(String[] args) { Integer[][] matrix = {{1, 2}, {3, 4}}; // 转换单层数组 System.out.println(Arrays.toString(matrix[0])); // 转换多层数组 System.out.println(Arrays.deepToString(matrix)); } } ``` --- ##### (5) 填充数组 (`fill`) 允许开发者向现有数组的所有单元格赋定初始默认值或者是部分区间内的设定新值. 实例化 fill 功能的应用场景。 ```java import java.util.Arrays; public class FillExample { public static void main(String[] args) { double[] doubles = new double[5]; Arrays.fill(doubles, 3.14); System.out.println(Arrays.toString(doubles)); // 部分区间的填充值设置 Arrays.fill(doubles, 1, 3, 6.28); System.out.println(Arrays.toString(doubles)); } } ``` --- ##### (6) 数组拷贝 (`copyOf`, `copyOfRange`) 这两个方法分别实现了浅复制整个原数组或将其中一部分截取下来创建新的独立副本. 实际运用 copyOf 和 copyOfRange 构造子集序列片段。 ```java import java.util.Arrays; public class CopyExample { public static void main(String[] args) { byte[] original = {1, 2, 3, 4, 5}; byte[] copyAll = Arrays.copyOf(original, original.length); byte[] subCopy = Arrays.copyOfRange(original, 1, 3); System.out.println(Arrays.toString(copyAll)); System.out.println(Arrays.toString(subCopy)); } } ``` --- #### 总结 综上所述,`Arrays` 提供了一系列便捷实用的方法简化了日常开发过程中针对数组的各种复杂处理需求。无论是基础性的增删改查还是高级别的算法优化都离不开它的身影[^2]。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值