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日

相关文章

  • h2database在springboot中的使用教程

    下面就是 “h2database 在 Spring Boot 中的使用教程”的完整攻略: 1. h2database 简介 h2database 是一种 Java 语言编写的嵌入式数据库,它提供了轻量级的高效数据存储方案。在开发 Spring Boot 应用程序时,我们可以选择在项目中使用内置的 h2database 引擎来支持数据存储和查询。 2. 引入 …

    Java 2023年5月20日
    00
  • java~springboot~ibatis数组in查询的实现方法

    下面我给您详细讲解Java SpringBoot集成iBatis实现数组IN查询的方法。 什么是iBatis iBatis是一款持久层框架,其通过提供的半自动ORM工具简化了数据库操作,使得开发者能够更加关注业务逻辑的实现。 数组IN查询的实现方式 当我们需要查询某个字段的值一次匹配多个值时,便需要使用数组IN查询。iBatis支持两种方式实现数组IN查询:…

    Java 2023年5月20日
    00
  • Java SpringBoot自定义starter详解

    当我们使用SpringBoot时,很多时候我们需要在项目中引入许多常用的依赖,这些依赖之间可能会存在依赖关系,我们需要维护它们的版本,非常麻烦。为了解决这个问题,SpringBoot提供了Starter的机制,它可以封装依赖的版本等信息,方便我们统一使用。 在本文中,我将详细介绍Java SpringBoot自定义Starter的过程,让你可以轻松创建自己的…

    Java 2023年5月19日
    00
  • 快速排序算法在Java中的实现

    下面我们来详细讲解“快速排序算法在Java中的实现”的完整攻略。 快速排序算法简介 快速排序(Quicksort)算法是基于分治思想的一种高效的排序算法,由Tony Hoare于1959年发明。其思路是选择一个枢纽元素(pivot),然后将待排序数据分为左右两个子序列,左子序列所有元素均小于枢纽元素,右子序列所有元素均大于等于枢纽元素。接着递归地对左右两个子…

    Java 2023年5月19日
    00
  • Java实现导出Excel功能

    下面我将详细讲解Java实现导出Excel功能的完整攻略,过程中包含以下几个步骤: 导入POI依赖 创建Excel工作簿和工作表 设置表头 向表中填充数据 导出Excel文件 1. 导入POI依赖 POI是Java操作Excel的开源项目,我们需要在项目中导入POI的相关依赖,这里以Maven为例,添加以下依赖即可: <dependency> &…

    Java 2023年5月26日
    00
  • js获取select标签的值且兼容IE与firefox

    为了获取select标签的值且兼容IE与Firefox,我们可以使用JavaScript编写代码。接下来,我将提供一个完整的攻略来帮助您实现这个目标。 获取select标签的值 我们可以使用JavaScript来获取select标签的值,以下是代码实现的步骤: 首先,使用document.getElementById()方法获取到select标签的引用。 然…

    Java 2023年6月15日
    00
  • Java实现雪花算法的示例代码

    题目:Java实现雪花算法的示例代码 1. 什么是雪花算法? 雪花算法(Snowflake)是Twitter公司开发的一种唯一ID生成算法,它可以生成一个长度为64bit的唯一ID,被广泛应用于分布式系统中,这样可以避免ID冲突的情况。 雪花算法的生成,主要依靠了数据中心ID(5位)、机器ID(5位)、时间戳(41位)以及自增的序列(12位)。 2. 雪花算…

    Java 2023年5月18日
    00
  • 使用eclipse + maven一步步搭建SSM框架教程详解

    下面就为您详细讲解如何使用eclipse + maven一步步搭建SSM框架。我们将从以下几个方面来介绍这个过程: 前置条件 创建Maven项目 添加依赖 创建实体类和Mapper接口 配置Spring和Mybatis 创建控制器和视图 示例1:查询所有用户信息 示例2:添加用户信息 1. 前置条件 在开始之前,请确认您已经安装并配置好了以下软件和环境: J…

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