Java Arrays 类的常用方法详解

Arrays 类是 Java 标准库中的一个实用工具类,提供了许多静态方法来操作数组。其中一些方法在日常开发中使用频率较高。以下是一些在实际开发中最常用的方法:

1. toString 方法

将数组转换为字符串表示。

int[] array = {1, 2, 3, 4, 5};
System.out.println(Arrays.toString(array));
// 输出: [1, 2, 3, 4, 5]

2. sort 方法

对数组进行排序(默认升序)。可以对 intdoublechar 等基本类型数组进行排序,也可以对对象数组进行排序(对象必须实现 Comparable 接口)。

int[] array = {5, 3, 1, 4, 2};
Arrays.sort(array);
System.out.println(Arrays.toString(array));
// 输出: [1, 2, 3, 4, 5]

3. binarySearch 方法

使用二分查找算法在排序后的数组中查找元素的位置。

int[] array = {1, 2, 3, 4, 5};
int index = Arrays.binarySearch(array, 3);
System.out.println(index);
// 输出: 2

4. equals 方法

比较两个数组是否相等。对于基本类型数组和对象数组都有对应的方法。

int[] array1 = {1, 2, 3, 4, 5};
int[] array2 = {1, 2, 3, 4, 5};
boolean isEqual = Arrays.equals(array1, array2);
System.out.println(isEqual);
// 输出: true

5. fill 方法

用指定的值填充数组的每个元素。

int[] array = new int[5];
Arrays.fill(array, 9);
System.out.println(Arrays.toString(array));
// 输出: [9, 9, 9, 9, 9]

6. copyOf 和 copyOfRange 方法

创建一个新数组,复制原数组中的所有或部分元素。

int[] array = {1, 2, 3, 4, 5};
int[] newArray = Arrays.copyOf(array, 3);
System.out.println(Arrays.toString(newArray));
// 输出: [1, 2, 3]int[] rangeArray = Arrays.copyOfRange(array, 1, 4);
System.out.println(Arrays.toString(rangeArray));
// 输出: [2, 3, 4]

7. asList 方法

将数组转换为 List。注意,这个方法返回的 List 是固定大小的,不能添加或删除元素。

String[] array = {"one", "two", "three"};
List<String> list = Arrays.asList(array);
System.out.println(list);
// 输出: [one, two, three]

8. deepToString 方法

将多维数组转换为字符串表示。

int[][] array = {{1, 2, 3}, {4, 5, 6}};
System.out.println(Arrays.deepToString(array));
// 输出: [[1, 2, 3], [4, 5, 6]]

9. deepEquals 方法

比较两个多维数组是否相等。

int[][] array1 = {{1, 2, 3}, {4, 5, 6}};
int[][] array2 = {{1, 2, 3}, {4, 5, 6}};
boolean isEqual = Arrays.deepEquals(array1, array2);
System.out.println(isEqual);
// 输出: true

10. parallelSort 方法

使用并行排序算法对数组进行排序。

int[] array = {5, 3, 1, 4, 2};
Arrays.parallelSort(array);
System.out.println(Arrays.toString(array));
// 输出: [1, 2, 3, 4, 5]

11. stream 方法

将数组转换为流(Stream),方便进行各种流操作。

int[] array = {1, 2, 3, 4, 5};
IntStream stream = Arrays.stream(array);
stream.forEach(System.out::println);
// 输出: 1 2 3 4 5

12. setAll 和 parallelSetAll 方法

使用生成器函数为数组的每个元素设置值。

int[] array = new int[5];
Arrays.setAll(array, i -> i * 2);
System.out.println(Arrays.toString(array));
// 输出: [0, 2, 4, 6, 8]

13. mismatch 方法

找到两个数组中第一个不同元素的索引。

int[] array1 = {1, 2, 3, 4, 5};
int[] array2 = {1, 2, 3, 4, 6};
int mismatchIndex = Arrays.mismatch(array1, array2);
System.out.println(mismatchIndex);
// 输出: 4

14. spliterator 方法

返回一个 Spliterator,可以用于并行遍历数组。

int[] array = {1, 2, 3, 4, 5};
Spliterator.OfInt spliterator = Arrays.spliterator(array);
spliterator.forEachRemaining(System.out::println);
// 输出: 1 2 3 4 5

15. hashCode 方法

返回数组的哈希码。对于基本类型数组和对象数组都有对应的方法。

int[] array = {1, 2, 3, 4, 5};
int hashCode = Arrays.hashCode(array);
System.out.println(hashCode);
// 输出: 哈希码值(与具体内容相关)

16. deepHashCode 方法

返回多维数组的深度哈希码。

int[][] array = {{1, 2, 3}, {4, 5, 6}};
int deepHashCode = Arrays.deepHashCode(array);
System.out.println(deepHashCode);
// 输出: 深度哈希码值(与具体内容相关)

17. deepCopyOf 方法

Java 标准库中没有 deepCopyOf 方法,但你可以使用 Arrays.stream 和 map 方法来实现多维数组的深度复制。

int[][] array = {{1, 2, 3}, {4, 5, 6}};
int[][] deepCopy = Arrays.stream(array).map(int[]::clone).toArray(int[][]::new);
System.out.println(Arrays.deepToString(deepCopy));
// 输出: [[1, 2, 3], [4, 5, 6]]

18. parallelPrefix 方法

使用给定的二元操作符对数组的每个元素进行累积操作。

int[] array = {1, 2, 3, 4, 5};
Arrays.parallelPrefix(array, Integer::sum);
System.out.println(Arrays.toString(array));
// 输出: [1, 3, 6, 10, 15]

19. parallelSetAll 方法

使用生成器函数并行设置数组的每个元素的值。

int[] array = new int[5];
Arrays.parallelSetAll(array, i -> i * 2);
System.out.println(Arrays.toString(array));
// 输出: [0, 2, 4, 6, 8]

20. compare 方法

比较两个数组的字典顺序。

int[] array1 = {1, 2, 3};
int[] array2 = {1, 2, 4};
int result = Arrays.compare(array1, array2);
System.out.println(result);
// 输出: -1(因为 array1 小于 array2)

21. compareUnsigned 方法

比较两个无符号数组的字典顺序。

byte[] array1 = {(byte) 255, 1, 2};
byte[] array2 = {0, 1, 2};
int result = Arrays.compareUnsigned(array1, array2);
System.out.println(result);
// 输出: 1(因为 255 作为无符号数大于 0)

22. setAll 方法

使用生成器函数设置数组的每个元素的值。

int[] array = new int[5];
Arrays.setAll(array, i -> i * 2);
System.out.println(Arrays.toString(array));
// 输出: [0, 2, 4, 6, 8]

23. parallelPrefix 方法

对数组的每个元素进行并行前缀计算。

int[] array = {1, 2, 3, 4, 5};
Arrays.parallelPrefix(array, Integer::sum);
System.out.println(Arrays.toString(array));
// 输出: [1, 3, 6, 10, 15]

24. checkIndex 方法

检查索引是否在数组范围内,返回索引或抛出 IndexOutOfBoundsException

int[] array = {1, 2, 3, 4, 5};
int index = Arrays.checkIndex(2, array.length);
System.out.println(index);
// 输出: 2

25. compare 方法

按字典顺序比较两个数组。

int[] array1 = {1, 2, 3};
int[] array2 = {1, 2, 4};
int result = Arrays.compare(array1, array2);
System.out.println(result);
// 输出: -1,因为 array1 小于 array2

26. compareUnsigned 方法

按字典顺序比较两个无符号数组。

byte[] array1 = {(byte) 255, 1, 2};
byte[] array2 = {0, 1, 2};
int result = Arrays.compareUnsigned(array1, array2);
System.out.println(result);
// 输出: 1,因为 255 作为无符号数大于 0

27. mismatch 方法

找到两个数组中第一个不同元素的索引。

int[] array1 = {1, 2, 3, 4, 5};
int[] array2 = {1, 2, 3, 4, 6};
int mismatchIndex = Arrays.mismatch(array1, array2);
System.out.println(mismatchIndex);
// 输出: 4

28. setAll 方法

使用生成器函数设置数组的每个元素的值。

int[] array = new int[5];
Arrays.setAll(array, i -> i * 2);
System.out.println(Arrays.toString(array));
// 输出: [0, 2, 4, 6, 8]

29. stream 方法

将数组转换为流(Stream),方便进行各种流操作。

int[] array = {1, 2, 3, 4, 5};
IntStream stream = Arrays.stream(array);
stream.forEach(System.out::println);
// 输出: 1 2 3 4 5

30. copyOf 和 copyOfRange 方法

创建一个新数组,复制原数组中的所有或部分元素。

int[] array = {1, 2, 3, 4, 5};
int[] newArray = Arrays.copyOf(array, 3);
System.out.println(Arrays.toString(newArray));
// 输出: [1, 2, 3]int[] rangeArray = Arrays.copyOfRange(array, 1, 4);
System.out.println(Arrays.toString(rangeArray));
// 输出: [2, 3, 4]

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/28162.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring-kafka消费者消费的一些问题

前言 Spring Kafka 无缝集成了 Spring Boot、Spring Framework 及其生态系统中的其他项目&#xff0c;如 Spring Cloud。通过与 Spring Boot 的自动配置结合&#xff0c;开发者可以快速启动和配置 Kafka 相关的功能。无需编写大量样板代码即可实现 Kafka 的生产和消费功能&…

Arm平台编译linuxdeployqt

在网上看了一下网友的分享&#xff0c;这个linuxdeployqt工具主要是用来打包qt程序的&#xff0c;但是程序不支持arm平台&#xff0c;需要下载源码编译才能用&#xff0c;自己测试了一下成功了&#xff0c;记录分享一下 操作步骤&#xff1a; 去下载源码&#xff1a;源码下载我…

揭开 Docker 容器的神秘面纱:深入理解容器原理

前言 前几年比较火的是微服务&#xff0c;再然后就是云。讨论技术必谈微服务&#xff0c;要上云&#xff0c;开发出的产品也都是某某云。现在讨论比较少了&#xff0c;因为AI盖过他们。还有就是因为容器技术&#xff0c;现在几乎都是k8s&#xff0c;云原生。要比较快的上手k8s…

HCIP笔记(拖拽题)

1、接口安全保护动作的名称和操作对应关系&#xff1a; 1&#xff09;restrict&#xff1a;丢弃触发静态MAC地址漂移的报文&#xff0c;并上报告警&#xff1b; 2&#xff09;protect&#xff1a;只丢弃触发触发静态MAC地址漂移的报文&#xff0c;不上报告警&#xff1b; 3&…

【源码】16国语言交易所源码/币币交易+期权交易+秒合约交易+永续合约+交割合约+新币申购+投资理财/手机端uniapp纯源码+PC纯源码+后端PHP

测试环境&#xff1a;Linux系统CentOS7.6、宝塔面板、Nginx、PHP7.3、MySQL5.6&#xff0c;根目录public&#xff0c;伪静态laravel5&#xff0c;开启ssl证书 语言&#xff1a;16种&#xff0c;看图 这套带前端uniapp纯源码&#xff0c;手机端和pc端都有纯源码&#xff0c;后…

【C++】 基础复习 | 数据类型,输入,输出流 scanf printf

文章目录 1 基本数据类型1.1 基本数据类型1.2 构造类型1.3 指针类型&#xff08;Pointers&#xff09; 2 基础输入输出2.1 通过输入输出操作符>> <<2.2 通过scanf和printf输入和输出2.2.1 输出printf 函数2.2.2 输出scanf 函数2.2.3 注意事项 1 基本数据类型 了解…

list集合自定义排序

一、基本类型排序 1.list中只有数字或字符串 //升序排序 List<T> ,T为数字或字符串 Collections.sort(list); //降序排序 Collections.sort(list,Collections.reverseOrder());2.list中为对象 基于jdk.18 import lombok.Data;Data public class User {private int i…

Linux基础指令(二)(文件、权限等)

目录 普通文件的操作 touch cat 翻页 标准输出重定向&#xff1a; 标准输出重定向种类&#xff1a;​​​​​​​ 管道符&#xff1a;&#xff5c; 压缩指令&#xff1a; zip gzip tar Linux下最常见的打包指令 其他系统指令&#xff1a;​​​​​​​ 快捷…

mysql update sql语句常见错误

以下update语句得不到预期结果 update event_detail set step_status1 and impact_area222isss.jsjd.lemem.com and end_time2024-06-14 17:23:39 where event_id91 and stepother_group2; 多个字段改动&#xff0c;不能使用 and连接&#xff0c;使用逗号“&#xff0c;”分隔即…

【C语言】进程间通信之管道pipe

进程间通信之管道pipe 一、进程间通信管道pipe()管道的读写行为 最后 一、进程间通信 管道pipe() 管道pipe也称为匿名管道&#xff0c;只有在有血缘关系的进程间进行通信。管道的本质就是一块内核缓冲区。 进程间通过管道的一端写&#xff0c;通过管道的另一端读。管道的读端…

【Python高阶编程】如何模拟生成训练日志并记录到文件

Python综合练习&#xff1a;生成训练日志 任务描述 在机器学习模型训练过程中&#xff0c;我们经常会记录模型的训练日志&#xff0c;包括accuracy&#xff08;准确率&#xff09;和loss&#xff08;损失&#xff09;。这个综合练习的目标是编写一段Python代码&#xff0c;模…

Linux下Shell脚本基础知识

主要参考视频&#xff1a; 这可能是B站讲的最好的Linux Shell脚本教程&#xff0c;3h打通Linux-shell全套教程&#xff0c;从入门到精通完整版_哔哩哔哩_bilibili 主要参考文档&#xff1a; Shell 教程 | 菜鸟教程 (runoob.com) Bash Shell教程 (yiibai.com) 先用视频入门&…

写在前面的话

《CSS in Depth》第二版开篇词 A minute to learn … A lifetime to master. ——Othello 「学会只需一分钟&#xff0c;精通却要一辈子」——这是诞生于上世纪的经典游戏《黑白棋》中的一个标语。 不知道看到这句话的你&#xff0c;是否有过这样的经历&#xff1a;在自己人生…

adb简单使用命令

1. 查看当前连接的设备 adb devices 2. 文件路径 adb install apk 注意文件路径中不能有中文 3. adb shell ps Toplogcatlogcat可以结合greplogcat *:w 显示警告级别以上de 4. adb uninstall 软件名 1.软件名如何查看&#xff1f; 使用命令adb shell pm list packages会…

基于springboot实现火锅店管理系统项目【项目源码+论文说明】

基于springboot实现火锅店管理系统演示 摘要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装火锅店管理系统软件来…

编译一个叫:未来的IDE-Zed编辑器(Windows平台)

一、前言 截止到2024-6-15&#xff0c;Zed官方并未给出Windows的二进制安装包&#xff0c;如果想在Windows平台使用的话需要自己编译&#xff0c;我是如何编译的请随我道来&#xff0c;有兴趣的码友可以尝试下&#xff0c;在下可不敢保证各位码友按我这方法能100%编译出来&…

【JavaEE进阶】——利用框架完成功能全面的图书管理系统

目录 &#x1f6a9;项目所需要的技术栈 &#x1f6a9;项目准备工作 &#x1f388;环境准备 &#x1f388;数据库准备 &#x1f6a9;前后端交互分析 &#x1f388;登录 &#x1f4dd;前后端交互 &#x1f4dd;实现服务器代码 &#x1f4dd;测试前后端代码是否正确 &am…

使用python获取内存信息

#!/usr/bin/python # -*- coding:utf-8 -*- psutil模块是一个跨平台的获取进程和系统应用情况&#xff08;CPU&#xff0c;内存&#xff0c;磁盘&#xff0c;网络&#xff0c;传感器&#xff09;的库。 该模块用于系统监控、限制进程资源和运行进程的管理等方面。 内存信息&am…

一些硬件知识(十)

MOS管当开关控制时&#xff0c;一般用PMOS做上管&#xff0c;NMOS做下管 细说MOS管知识-MOS管高端驱动与低端驱动解析和原理及区别_高端功率 mos 管是什么意思-CSDN博客 PMOS管&#xff1a; PMOS管的源极&#xff08;Source&#xff09;通常连接到正电源&#xff08;Vcc&#…

c++中内存对齐练习题

C/C 内存对齐题目练习_41在32位机器上用gcc编译以上代码-CSDN博客