Java 基础–Arrays工具类详解

Java 基础--Arrays工具类详解

简介

Java Arrays 工具类提供了一些用来操作数组的静态方法,这些方法包括如下:

  • 排序和搜索
  • sort()
  • binarySearch()
  • 数组拷贝
  • copyOf()
  • copyOfRange()
  • 数组填充
  • fill()
  • 数组比较
  • equals()
  • 转换为列表
  • asList()

下面将对这些方法进行详细说明。

排序和搜索

sort()

Java Arrays 工具类提供的 sort() 方法用于对指定数组进行排序。默认情况下,该方法按升序排列数组元素。sort() 方法使用的是快速排序(Quicksort)算法实现的。

sort() 方法有两种重载形式。第一种形式是对整个数组进行排序,第二种形式是指定排序范围:

public static void sort(int[] arr) // 对整个 int 数组按升序排序
public static void sort(int[] arr, int fromIndex, int toIndex) // 从 fromIndex 开始到 toIndex-1 ,对 int 数组进行排序

示例代码:

int[] arr = {22, 18, 1, 37, 99};
Arrays.sort(arr); // 对整个数组进行排序
System.out.println(Arrays.toString(arr)); // 输出排序后的数组
// 输出: [1, 18, 22, 37, 99]

binarySearch()

Java Arrays 工具类提供的 binarySearch() 方法用于对已排序的数组执行二分查找(Binary Search)。如果数组未排序,则参数“行为是未定义的”(Undefined)。

binarySearch() 方法有三种重载形式。第一种形式只要求数组和要查找的值,第二种形式还要求起始和结束索引,第三种形式还要求一个比较器。

public static int binarySearch(int[] arr, int key) // 需要查找的元素 key ,在 int 数组 arr 中找到的索引位置
public static int binarySearch(int[] arr, int fromIndex, int toIndex, int key) // 需要查找的元素 key ,在 int 数组 arr 中从索引 fromIndex 开始到索引 toIndex-1 的范围内找到的索引位置
public static int binarySearch(int[] arr, int key, Comparator<int> comparator) // 需要查找的元素 key ,在 int 数组 arr 中找到的索引位置,使用比较器进行比较

示例代码:

int[] arr = {1, 18, 22, 37, 99};
int index = Arrays.binarySearch(arr, 22); // 二分查找 22 在数组中的索引
System.out.println(index); // 输出: 2

数组拷贝

copyOf()

Java Arrays 工具类提供的 copyOf() 方法用于对原始数组进行复制,返回一个新的数组。新数组长度为指定长度,多余的元素由 0 填充。如果源数组长度小于指定的长度,则在新数组的末尾填充 0。

copyOf() 方法有两种重载形式。第一种形式是对整个原始数组进行复制,第二种形式是复制指定范围的原始数组:

public static char[] copyOf(char[] original, int newLength)  // 复制整个 char 数组
public static char[] copyOfRange(char[] original, int from, int to) // 复制 char 数组的一部分

示例代码:

char[] original = {'a', 'b', 'c', 'd', 'e'};
char[] copy = Arrays.copyOf(original, 10); // 复制 char 数组 original,并将其长度增加至 10
System.out.println(Arrays.toString(copy)); // 输出:[a, b, c, d, e, , , , , ]

char[] copy2 = Arrays.copyOfRange(original, 1, 4); // 复制 char 数组 original 的索引 1 到 3 的元素
System.out.println(Arrays.toString(copy2)); // 输出:[b, c, d]

copyOfRange()

copyOfRange() 方法与 copyOf() 方法类似,也是用于对原始数组进行复制,并返回一个新的数组。但 copyOfRange() 方法的作用是复制指定范围内的值。

public static <T> T[] copyOfRange(T[] original, int from, int to, Class<? extends T[]> newType) // 复制一个对象数组的一部分
public static int[] copyOfRange(int[] original, int from, int to)  // 复制 int 数组的一部分

示例代码:

int[] original = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int[] copy = Arrays.copyOfRange(original, 0, 5); // 复制原始数组的前 5 个元素
System.out.println(Arrays.toString(copy)); // 输出:[1, 2, 3, 4, 5]

数组填充

Java Arrays 工具类提供的 fill() 方法用于将指定值填充到数组中的每个元素上。

fill() 方法有两种重载形式。第一种形式是将整个数组填充为指定值,第二种形式是将指定范围内的数组元素填充指定值:

public static void fill(long[] a, long val) // 将整个 long 数组填充为指定值
public static void fill(int[] a, int fromIndex, int toIndex, int val)  // 将 int 数组的一部分填充为指定值

示例代码:

int[] arr = new int[5];
Arrays.fill(arr, 1); // 将 int 数组每个元素填充为 1
System.out.println(Arrays.toString(arr)); // 输出: [1, 1, 1, 1, 1]

Arrays.fill(arr, 1, 4, 0); // 将 int 数组索引 1 到 3 的元素填充为 0
System.out.println(Arrays.toString(arr)); // 输出: [1, 0, 0, 0, 1]

数组比较

Java Arrays 工具类提供的 equals() 方法用于比较两个数组是否相等。

equals() 方法有两种重载形式。第一种形式直接比较两个相同类型的值数组,第二种形式还可以指定比较范围。

public static boolean equals(int[] a, int[] a2)  // 比较两个 int 数组是否相等
public static boolean equals(Object[] a, Object[] a2) // 比较两个 Object 数组是否相等
public static boolean equals(int[] a, int[] a2, int length); // 比较两个 int 数组从索引 0 开始,到指定长度的元素是否相等

示例代码:

int[] arr1 = {1, 2, 3, 4};
int[] arr2 = {1, 2, 3, 4};
boolean isEqual = Arrays.equals(arr1, arr2); // 判断两个数组是否相等
System.out.println(isEqual); // 输出:true

int[] arr3 = {1, 2, 3, 4, 5};
boolean isEqual2 = Arrays.equals(arr1, arr3, arr1.length); // 判断两个数组从 0 开始,到指定长度是否相等
System.out.println(isEqual2); // 输出:true

转换为列表

Java Arrays 工具类提供的 asList() 方法能够将数组转换为列表。需要注意的是,asList() 方法返回的列表不能修改,否则会抛出异常。

public static <T> List<T> asList(T... a) // 将对象数组转换为定长列表

示例代码:

Integer[] arr = {1, 2, 3, 4, 5};
List<Integer> list = Arrays.asList(arr); // 将 Integer 数组转换为列表
System.out.println(list); // 输出:[1, 2, 3, 4, 5]

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 基础–Arrays工具类详解 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • Java实现折半插入排序算法的示例代码

    Java实现折半插入排序算法的示例代码 算法简介 折半插入排序(Binary Insertion Sort)是插入排序算法的一种变体,它通过使用折半查找来减少比较和移动的次数,从而提高算法的效率。算法的时间复杂度为O(n^2)。 示例代码 下面是Java实现折半插入排序算法的示例代码: public static void binaryInsertionSo…

    Java 2023年5月19日
    00
  • 通过实例了解cookie机制特性及使用方法

    下面我将详细讲解“通过实例了解cookie机制特性及使用方法”的完整攻略。 什么是cookie cookie是一种客户端存储技术,用于保存用户在网站上的数据,常用的数据包括用户的登录状态、购物车内容等。cookie可以在不同的页面中共享数据,以此在用户与网站之间建立持久的关系。 cookie的特性 cookie是一种客户端存储技术,数据保存在用户的浏览器上;…

    Java 2023年5月20日
    00
  • JS获取计算机mac地址以及IP的实现方法

    获取计算机的MAC地址和IP地址,可以使用JavaScript来实现。不过需要注意的是,这些信息只能从请求发起的客户端获取,而无法从服务器端获取。下面是具体的实现方法: 获取IP地址 获取IP地址的方法比较简单,可以通过访问某些特定的网站来获取。常用的方法是使用httpbin.org提供的IP地址查询API。具体步骤如下: 构造一个GET请求,访问”http…

    Java 2023年6月15日
    00
  • 在Win10上安装Tomcat服务器及配置环境变量的详细教程(图文)

    在Win10上安装Tomcat服务器及配置环境变量的详细教程: 准备工作 官方网站下载Tomcat服务器压缩文件,例如tomcat-8.5.57.tar.gz 安装JDK,推荐版本为JDK8或JDK11,JDK11及以上版本,Tomcat需版本在9及以上 确认JDK环境变量已配置 安装Tomcat 解压Tomcat服务器压缩文件到指定目录。例如,将压缩文件解…

    Java 2023年5月19日
    00
  • MyBatis学习教程(八)-Mybatis3.x与Spring4.x整合图文详解

    “MyBatis学习教程(八)-Mybatis3.x与Spring4.x整合图文详解”是一篇介绍如何将Mybatis3.x和Spring4.x整合起来的教程。该教程主要分为以下几个部分: 1. 整合前准备 在整合Mybatis3.x和Spring4.x之前,我们需要先确保系统中已经安装好了Spring4.x和Mybatis3.x。如果还没有安装,可以参考官方…

    Java 2023年5月19日
    00
  • Java使用I/O流读取文件内容的方法详解

    下面是Java使用I/O流读取文件内容的方法详解的完整攻略。 1. Java I/O流简介 Java I/O(输入/输出)流是Java提供的用于读取和写入数据的一种机制。Java I/O流可以用于文件操作、网络编程、数据库操作等多种场景。Java I/O流分为字节流和字符流两种: 字节流:以字节为单位进行读写操作,常用的类有InputStream和Outpu…

    Java 2023年5月20日
    00
  • 记一次Maven项目改造成SpringBoot项目的过程实践

    针对您的问题,我将按照以下步骤进行详细讲解: 1. 创建Spring Boot项目 首先,我们需要创建一个Spring Boot项目。可以在Spring Initializr上选择相应的配置选项,添加所需的依赖,然后点击“Generate”按钮生成项目。 2. 导入原有项目 在创建好的Spring Boot项目中,我们需要将原有的Maven项目代码导入。一般…

    Java 2023年5月19日
    00
  • 完整的医院就诊挂号系统基于Spring MVC + Spring + MyBatis实现

    完整的医院就诊挂号系统基于Spring MVC + Spring + MyBatis实现 医院就诊挂号系统是一个常见的医疗信息化应用,它可以帮助患者方便地预约挂号、查询医生信息、查看就诊记录等。本文将详细讲解如何使用 Spring MVC + Spring + MyBatis 框架实现一个完整的医院就诊挂号系统,包括如何设计数据库、如何实现业务逻辑、如何实现…

    Java 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部