java中Arrays的用法

本文深入讲解Java中Arrays工具类的功能,包括数组复制、转换为字符串、排序、搜索、判断是否相同及填充等操作,极大提高开发效率。

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

Arrays是针对数组的工具类,可以进行 排序,查找,复制填充等功能。 大大提高了开发人员的工作效率。

数组复制

使用System.arraycopy进行数组复制类似的, Arrays提供了一个copyOfRange方法进行数组复制。

不同的是System.arraycopy,需要事先准备好目标数组,并分配长度。 copyOfRange 只需要源数组就就可以了,通过返回值,就能够得到目标数组了。
除此之外,需要注意的是 copyOfRange 的 第3个参数,表示源数组的结束位置,是取不到的。
import java.util.Arrays;

public class HelloWorld {
	public static void main(String[] args) {
		int a[] = new int[] { 18, 62, 68, 82, 65, 9 };

		// copyOfRange(int[] original, int from, int to)
		// 第一个参数表示源数组
		// 第二个参数表示开始位置(取得到)
		// 第三个参数表示结束位置(取不到)
		int[] b = Arrays.copyOfRange(a, 0, 3);

		for (int i = 0; i < b.length; i++) {
			System.out.print(b[i] + " ");
		}

	}
}

  而用System.arraycopy进行复制的话如下

public class HelloWorld {
    public static void main(String[] args) {
        int a [] = new int[]{18,62,68,82,65,9};
         
        int b[] = new int[3];//分配了长度是3的空间,但是没有赋值
         
        //通过数组赋值把,a数组的前3位赋值到b数组
         
        //方法一: for循环
         
        for (int i = 0; i < b.length; i++) {
            b[i] = a[i];
        }
        
        //方法二: System.arraycopy(src, srcPos, dest, destPos, length)
        //src: 源数组
        //srcPos: 从源数组复制数据的启始位置
        //dest: 目标数组
        //destPos: 复制到目标数组的启始位置
        //length: 复制的长度       
        System.arraycopy(a, 0, b, 0, 3);
         
        //把内容打印出来
        for (int i = 0; i < b.length; i++) {
            System.out.print(b[i] + " ");
        }
 
    }
}

  

二 转换为字符串

如果要打印一个数组的内容,就需要通过for循环来挨个遍历,逐一打印但是Arrays提供了一个toString()方法,直接把一个数组,转换为字符串,这样方便观察数组的内容

import java.util.Arrays;
  
public class HelloWorld {
    public static void main(String[] args) {
        int a[] = new int[] { 18, 62, 68, 82, 65, 9 };
        String content = Arrays.toString(a);
        System.out.println(content);
  
    }
}

 三排序

Arrays工具类提供了一个sort方法,只需要一行代码即可完成排序功能。

import java.util.Arrays;
  
public class HelloWorld {
    public static void main(String[] args) {
        int a[] = new int[] { 18, 62, 68, 82, 65, 9 };
        System.out.println("排序之前 :");
        System.out.println(Arrays.toString(a));
        Arrays.sort(a);
        System.out.println("排序之后:");
        System.out.println(Arrays.toString(a));
  
    }
}

  四 搜索

  查询元素出现的位置
需要注意的是,使用binarySearch进行查找之前,必须使用sort进行排序
如果数组中有多个相同的元素,查找结果是不确定的

import java.util.Arrays;
 
public class HelloWorld {
    public static void main(String[] args) {
        int a[] = new int[] { 18, 62, 68, 82, 65, 9 };
 
        Arrays.sort(a);
 
        System.out.println(Arrays.toString(a));
        //使用binarySearch之前,必须先使用sort进行排序
        System.out.println("数字 62出现的位置:"+Arrays.binarySearch(a, 62));
    }
}

  五 判断是否相同

比较两个数组的内容是否一样
第二个数组的最后一个元素是8,和第一个数组不一样,所以比较结果是false

import java.util.Arrays;
 
public class HelloWorld {
    public static void main(String[] args) {
        int a[] = new int[] { 18, 62, 68, 82, 65, 9 };
        int b[] = new int[] { 18, 62, 68, 82, 65, 8 };
 
        System.out.println(Arrays.equals(a, b));
    }
}

  六填充

使用同一个值,填充整个数组

import java.util.Arrays;
  
public class HelloWorld {
    public static void main(String[] args) {
        int a[] = new int[10];
  
        Arrays.fill(a, 5);
  
        System.out.println(Arrays.toString(a));
  
    }
}

  编辑较为混乱 日后再重新整理

 

 

转载于:https://www.cnblogs.com/loufangcheng/p/10531467.html

### 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]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值