当前位置: 首页 > news >正文

java.util.Arrays 详解

排序

  • sort(int[] a): 对指定 int 型数组按数字升序进行排序。
  • sort(Object[] a): 对指定对象数组进行排序(对象的类必须实现 Comparable 接口)。
  • sort(T[] a, Comparator<? super T> c): 使用指定的比较器对数组进行排序。
  • sort(int[] a, int fromIndex, int toIndex): 对数组指定范围的元素进行排序。
int[] array = {5, 3, 8, 4, 2};  
Arrays.sort(array);  
System.out.println(Arrays.toString(array)); // 输出 [2, 3, 4, 5, 8]

搜索

  • binarySearch(int[] a, int key): 使用二分搜索算法在已排序的数组中搜索指定的值。
  • binarySearch(Object[] a, Object key): 类似上面的方法,但用于对象数组。
  • binarySearch(T[] a, int fromIndex, int toIndex, T key): 在指定范围的已排序数组中搜索值。
int[] sortedArray = {1, 2, 3, 4, 5};  
int index = Arrays.binarySearch(sortedArray, 3);  
System.out.println(index); // 输出 2,因为 3 在索引 2 的位置

比较

  • equals(int[] a, int[] a2): 如果两个数组在长度和元素上都相等,则返回 true。
  • deepEquals(Object[] a1, Object[] a2): 如果两个对象数组在长度和元素上都相等(使用 equals() 方法比较元素),则返回 true。
  • compare(byte[] a, byte[] b): 按字典顺序比较两个字节数组。
int[] array1 = {1, 2, 3};  
int[] array2 = {1, 2, 3};  
boolean isEqual = Arrays.equals(array1, array2);  
System.out.println(isEqual); // 输出 true

填充

  • fill(int[] a, int val): 将指定值分配给指定 int 型数组的每个元素。
  • fill(Object[] a, Object val): 类似上面的方法,但用于对象数组。
  • fill(int[] a, int fromIndex, int toIndex, int val): 将指定范围的数组元素设置为指定值。
int[] array = new int[5];  
Arrays.fill(array, 8);  
System.out.println(Arrays.toString(array)); // 输出 [8, 8, 8, 8, 8]

复制

  • copyOf(int[] original, int newLength): 复制指定的数组,截断或填充以获取所需长度的新数组。
  • copyOfRange(int[] original, int from, int to): 将指定数组的指定范围复制到新数组。
int[] original = {1, 2, 3, 4, 5};  
int[] copied = Arrays.copyOf(original, 7); // 长度为 7 的新数组,多余的位置默认为 0  
System.out.println(Arrays.toString(copied)); // 输出 [1, 2, 3, 4, 5, 0, 0]

转换为字符串

  • toString(int[] a): 返回指定数组内容的字符串表示形式。
  • deepToString(Object[] a): 返回对象数组的字符串表示形式,其中数组的每个元素都是其 toString() 方法的返回值。
int[] array = {1, 2, 3};  
String str = Arrays.toString(array);  
System.out.println(str); // 输出 [1, 2, 3]

 其他实用方法

asList方法 

注意:返回的列表大小是固定的,不支持 add 或 addAll 操作。

List<Integer> list = Arrays.asList(1, 2, 3);  
System.out.println(list); // 输出 [1, 2, 3]  
// 以下操作会抛出 UnsupportedOperationException  
// list.add(4); // 不支持

hashCode方法

通常不需要直接调用此方法,但在某些自定义对象需要重写 hashCode 方法时,可能会作为参考。

int[] array = {1, 2, 3};  
int hashCode = Arrays.hashCode(array);  
System.out.println(hashCode); // 输出数组内容的哈希码

setAll方法

该方法用于通过给定的生成器函数为数组的每个索引生成新的值。

int[] array = new int[5];  
Arrays.setAll(array, i -> i * 2); // 使用 lambda 表达式为每个索引生成值  
System.out.println(Arrays.toString(array)); // 输出 [0, 2, 4, 6, 8]

 

相关文章:

  • 【八股系列】webpack的构建流程是什么?
  • 如何用电脑批量操作多部手机
  • 二.常见算法--贪心算法
  • 基金基础知识-基金的生命周期
  • 蒙特卡洛+概率潮流!基于蒙特卡洛和新能源出力模拟的概率潮流分布程序代码!
  • AI赋能 企业智能化应用实践
  • Django数据库查询操作
  • C# 观察者模式实现
  • 【Linux】深入理解 Linux 的 chmod 指令
  • 音视频-常用的分析工具介绍-连续补充
  • 基于Django的美团药品数据分析与可视化系统,有多用户功能,可增删改查数据
  • 产品经理交接规范及流程
  • vue3的api风格
  • 【学习笔记】后端(Ⅰ)—— NodeJS(Ⅰ)
  • 鸿蒙HarmonyOS开发:tabs结合tabContent实现底部tabBar导航栏页面布局
  • 时间复杂度分析经典问题——最大子序列和
  • AHK 中 = 和 == 等比较运算符的用法
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • javascript 哈希表
  • Javascript基础之Array数组API
  • Java的Interrupt与线程中断
  • js面向对象
  • Laravel 中的一个后期静态绑定
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • log4j2输出到kafka
  • Node + FFmpeg 实现Canvas动画导出视频
  • Python打包系统简单入门
  • React-生命周期杂记
  • 回顾2016
  • 机器学习 vs. 深度学习
  • 前端学习笔记之观察者模式
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 推荐一个React的管理后台框架
  • 我建了一个叫Hello World的项目
  • 一个项目push到多个远程Git仓库
  • 用jQuery怎么做到前后端分离
  • 字符串匹配基础上
  • C# - 为值类型重定义相等性
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (0)Nginx 功能特性
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (定时器/计数器)中断系统(详解与使用)
  • (强烈推荐)移动端音视频从零到上手(下)
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (四)React组件、useState、组件样式
  • (转)程序员疫苗:代码注入
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • ./configure,make,make install的作用(转)
  • .gitignore文件_Git:.gitignore
  • .Net Core和.Net Standard直观理解
  • .NET 直连SAP HANA数据库
  • .NET之C#编程:懒汉模式的终结,单例模式的正确打开方式
  • :=