Java Arrays:专为数组而生的工具类

java中Arrays工具类的用法 java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的。具有以下功能: 给数组赋值:通过fill方法。 对数组排序:通过sort方法,按升序 比 较 数 组: 通过equals方法比较数组中元素值是否相等。 查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。 截取数组元素:通过copyOf方法和copyOfRange对数组元素进行截取。... 阅读详情
titleshortTitlecategorytagdescriptionhead
Java Arrays:专为数组而生的工具类
Arrays工具类
Java核心
常用工具类
Java程序员进阶之路,小白的零基础Java教程,从入门到进阶,Java Arrays工具类的10大常用方法
meta
namecontent
keywords
Java,Java SE,Java基础,Java教程,Java程序员进阶之路,Java入门,教程,java,Arrays,数组

“哥,数组专用工具类是专门用来操作数组的吗?比如说创建数组、数组排序、数组检索等等。”三妹的提问其实已经把答案说了出来。

“是滴,这里说的数组专用工具类指的是 java.util.Arrays 类,基本上常见的数组操作,这个类都提供了静态方法可供直接调用。毕竟数组本身想完成这些操作还是挺麻烦的,有了这层封装,就方便多了。”在回答三妹的同时,我打开 Intellij IDEA,找到了 Arrays 类的源码。

package java.util;
/**
 * @author Josh Bloch
 * @author Neal Gafter
 * @author John Rose
 * @since  1.2
 */
public class Arrays {}

“具体来说,数组操作可分为以下 9 种。”

  • 创建数组
  • 比较数组
  • 数组排序
  • 数组检索
  • 数组转流
  • 打印数组
  • 数组转 List
  • setAll(没想好中文名)
  • parallelPrefix(没想好中文名)

“我们来一个一个学习。”

01、创建数组

使用 Arrays 类创建数组可以通过以下三个方法:

  • copyOf,复制指定的数组,截取或用 null 填充
  • copyOfRange,复制指定范围内的数组到一个新的数组
  • fill,对数组进行填充

1)copyOf

直接来看例子:

String[] intro = new String[] { "沉", "默", "王", "二" };
String[] revised = Arrays.copyOf(intro, 3);
String[] expanded = Arrays.copyOf(intro, 5);
System.out.println(Arrays.toString(revised));
System.out.println(Arrays.toString(expanded));

revised 和 expanded 是复制后的新数组,长度分别是 3 和 5,指定的数组长度是 4。来看一下输出结果:

[沉, 默, 王]
[沉, 默, 王, 二, null]

看到没?revised 截取了最后一位,因为长度是 3 嘛;expanded 用 null 填充了一位,因为长度是 5。

ArrayList(内部的数据结构用的就是数组)源码中的 grow() 方法就调用了 copyOf() 方法:当 ArrayList 初始大小不满足元素的增长时就会扩容。

private Object[] grow(int minCapacity) {
    return elementData = Arrays.copyOf(elementData,
            newCapacity(minCapacity));
}

2)copyOfRange

直接来看例子:

String[] intro = new String[] { "沉", "默", "王", "二" };
String[] abridgement = Arrays.copyOfRange(intro, 0, 3);
System.out.println(Arrays.toString(abridgement));

copyOfRange() 方法需要三个参数,第一个是指定的数组,第二个是起始位置(包含),第三个是截止位置(不包含)。来看一下输出结果:

[沉, 默, 王]

0 的位置是“沉”,3 的位置是“二”,也就是说截取了从 0 位(包含)到 3 位(不包含)的数组元素。那假如说下标超出了数组的长度,会发生什么呢?

String[] abridgementExpanded = Arrays.copyOfRange(intro, 0, 6);
System.out.println(Arrays.toString(abridgementExpanded));

结束位置此时为 6,超出了指定数组的长度 4,来看一下输出结果:

[沉, 默, 王, 二, null, null]

仍然使用了 null 进行填充。

“为什么要这么做呢?”经过这段时间的学习,三妹的眼光越来越毒辣了,问的问题都恰到好处。

“嗯,我想是 Arrays 的设计者考虑到了数组越界的问题,不然每次调用 Arrays 类就要先判断很多次长度,很麻烦。”稍作思考后,我给出了这样一个回答。

3)fill

直接来看例子:

String[] stutter = new String[4];
Arrays.fill(stutter, "沉默王二");
System.out.println(Arrays.toString(stutter));

使用 new 关键字创建了一个长度为 4 的数组,然后使用 fill() 方法将 4 个位置填充为“沉默王二”,来看一下输出结果:

[沉默王二, 沉默王二, 沉默王二, 沉默王二]

如果想要一个元素完全相同的数组时, fill() 方法就派上用场了。

02、比较数组

Arrays 类的 equals() 方法用来判断两个数组是否相等,来看下面这个例子:

String[] intro = new String[] { "沉", "默", "王", "二" };
boolean result = Arrays.equals(new String[] { "沉", "默", "王", "二" }, intro);
System.out.println(result);
boolean result1 = Arrays.equals(new String[] { "沉", "默", "王", "三" }, intro);
System.out.println(result1);

输出结果如下所示:

true
false

指定的数组为沉默王二四个字,比较的数组一个是沉默王二,一个是沉默王三,所以 result 为 true,result1 为 false。

简单看一下 equals() 方法的源码:

public static boolean equals(Object[] a, Object[] a2) {
    if (a==a2)
        return true;
    if (a==null || a2==null)
        return false;

    int length = a.length;
    if (a2.length != length)
        return false;

    for (int i=0; i<length; i++) {
        if (!Objects.equals(a[i], a2[i]))
            return false;
    }

    return true;
}

因为数组是一个对象,所以先使用“==”操作符进行判断,如果不相等,再判断是否为 null,两个都为 null,返回 false;紧接着判断 length,不等的话,返回 false;否则的话,依次调用 Objects.equals() 比较相同位置上的元素是否相等。

“这段代码还是非常严谨的,对吧?三妹,这也就是我们学习源码的意义,欣赏的同时,可以学习源码作者清晰的编码思路。”我语重心长地给三妹讲。

除了 equals() 方法,还有另外一个诀窍可以判断两个数组是否相等,尽管可能会出现误差。那就是 Arrays.hashCode() 方法,先来看一下该方法的源码:

public static int hashCode(Object a[]) {
    if (a == null)
        return 0;

    int result = 1;

    for (Object element : a)
        result = 31 * result + (element == null ? 0 : element.hashCode());

    return result;
}

哈希算法本身是非常严谨的,所以如果两个数组的哈希值相等,那几乎可以判断两个数组是相等的。

String[] intro = new String[] { "沉", "默", "王", "二" };

System.out.println(Arrays.hashCode(intro));
System.out.println(Arrays.hashCode(new String[] { "沉", "默", "王", "二" }));

来看一下输出结果:

868681617
868681617

两个数组的哈希值相等,毕竟元素是一样的。但这样确实不够严谨,优先使用 Objects.equals() 方法,当我们想快速确认两个数组是否相等时,可以通过比较 hashCode 来确认——算是投机取巧吧,高收益高风险,哈哈。

03、数组排序

Arrays 类的 sort() 方法用来对数组进行排序,来看下面这个例子:

String[] intro1 = new String[] { "chen", "mo", "wang", "er" };
String[] sorted = Arrays.copyOf(intro1, 4);
Arrays.sort(sorted);
System.out.println(Arrays.toString(sorted));

由于排序会改变原有的数组,所以我们使用了 copyOf() 方法重新复制了一份。来看一下输出结果:

[chen, er, mo, wang]

可以看得出,按照的是首字母的升序进行排列的。基本数据类型是按照双轴快速排序的,引用数据类型是按照 TimSort 排序的,使用了 Peter McIlroy 的“乐观排序和信息理论复杂性”中的技术。

“哥,你说的这些排序算法我都不太懂啊!”三妹眨巴眨巴眼睛说。

“不要紧的,后面学了数据结构与算法后,就明白了,现在了解这个东西即可。”我赶紧甩出了安抚大法。

04、数组检索

数组排序后就可以使用 Arrays 类的 binarySearch() 方法进行二分查找了。否则的话,只能线性检索,效率就会低很多。

String[] intro1 = new String[] { "chen", "mo", "wang", "er" };
String[] sorted = Arrays.copyOf(intro1, 4);
Arrays.sort(sorted);
int exact = Arrays.binarySearch(sorted, "wang");
System.out.println(exact);
int caseInsensitive = Arrays.binarySearch(sorted, "Wang", String::compareToIgnoreCase);
System.out.println(caseInsensitive);

binarySearch() 方法既可以精确检索,也可以模糊检索,比如说忽略大小写。来看一下输出结果:

3
3

排序后的结果是 [chen, er, mo, wang],所以检索出来的下标是 3。

“三妹,记住了,以后如果要从数组或者集合中查找元素的话,尽量先排序,然后使用二分查找法,这样能提高检索的效率。”

三妹若有所思的点了点头。

05、数组转流

“流是什么呀?”三妹好奇的问。

“流的英文单词是 Stream,它可以极大提高 Java 程序员的生产力,让程序员写出高效、干净、简洁的代码。 这种风格将要处理的集合看作是一种流,想象一下水流在管道中流过的样子,我们可以在管道中对流进行处理,比如筛选、排序等等。Stream 具体怎么使用,我们留到后面再详细地讲,这里你先有一个大致的印象就可以了。”我回答到。

Arrays 类的 stream() 方法可以将数组转换成流:

String[] intro = new String[] { "沉", "默", "王", "二" };
System.out.println(Arrays.stream(intro).count());

还可以为 stream() 方法指定起始下标和结束下标:

System.out.println(Arrays.stream(intro, 1, 2).count());

如果下标的范围有误的时候,比如说从 2 到 1 结束,则程序会抛出 ArrayIndexOutOfBoundsException 异常:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: origin(2) > fence(1)
	at java.base/java.util.Spliterators.checkFromToBounds(Spliterators.java:387)

06、打印数组

因为数组是一个对象,直接 System.out.println 的话,结果是这样的:

[Ljava.lang.String;@3d075dc0

最优雅的打印方式,是使用 Arrays.toString(),来看一下该方法的源码:

public static String toString(Object[] a) {
    if (a == null)
        return "null";

    int iMax = a.length - 1;
    if (iMax == -1)
        return "[]";

    StringBuilder b = new StringBuilder();
    b.append('[');
    for (int i = 0; ; i++) {
        b.append(String.valueOf(a[i]));
        if (i == iMax)
            return b.append(']').toString();
        b.append(", ");
    }
}
  • 先判断 null,是的话,直接返回“null”字符串;
  • 获取数组的长度,如果数组的长度为 0( 等价于 length - 1 为 -1),返回中括号“[]”,表示数组为空的;
  • 如果数组既不是 null,长度也不为 0,就声明 StringBuilder 对象,然后添加一个数组的开始标记“[”,之后再遍历数组,把每个元素添加进去;其中一个小技巧就是,当遇到末尾元素的时候(i == iMax),不再添加逗号和空格“, ”,而是添加数组的闭合标记“]”。

“哥,我能不能问一个问题呀?”

“你问啊。”

“就是为什么判断数组长度为 0 的时候判断的是减 1 后比较 -1 呢?为什么不直接比较 0 呢?”

“呀,你这个问题问的很妙啊!”我想到三妹说一句“respect”,很强!“其实是和遍历数组的时候判断 i == iMax 有关了,否则这里就要用 i == iMax -1 来判断是否到达数组的最后一个元素了。”

“哦----------”三妹似乎明白了什么。

07、数组转 List

尽管数组非常强大,但它自身可以操作的工具方法很少,比如说判断数组中是否包含某个值。如果能转成 List 的话,就简便多了,因为 Java 的集合框架 List 中封装了很多常用的方法。

String[] intro = new String[] { "沉", "默", "王", "二" };
List<String> rets = Arrays.asList(intro);
System.out.println(rets.contains("二"));

不过需要注意的是,Arrays.asList() 返回的是 java.util.Arrays.ArrayList,并不是 java.util.ArrayList,它的长度是固定的,无法进行元素的删除或者添加。

rets.add("三");
rets.remove("二");

这个在编码的时候一定要注意,否则在执行这两个方法的时候,会抛出异常:

Exception in thread "main" java.lang.UnsupportedOperationException
	at java.base/java.util.AbstractList.add(AbstractList.java:153)
	at java.base/java.util.AbstractList.add(AbstractList.java:111)

要想操作元素的话,需要多一步转化,转成真正的 java.util.ArrayList:

List<String> rets1 = new ArrayList<>(Arrays.asList(intro));
rets1.add("三");
rets1.remove("二");

08、setAll

Java 8 新增了 setAll() 方法,它提供了一个函数式编程的入口,可以对数组的元素进行填充:

int[] array = new int[10];
Arrays.setAll(array, i -> i * 10);
System.out.println(Arrays.toString(array));

“这段代码什么意思呢?”三妹问。

i 就相当于是数组的下标,值从 0 开始,到 9 结束,那么 i * 10 就意味着值从 0 * 10 开始,到 9 * 10 结束,来看一下输出结果:

[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]

可以用来为新数组填充基于原来数组的新元素。

09、parallelPrefix

parallelPrefix() 方法和 setAll() 方法一样,也是 Java 8 之后提供的,提供了一个函数式编程的入口,通过遍历数组中的元素,将当前下标位置上的元素与它之前下标的元素进行操作,然后将操作后的结果覆盖当前下标位置上的元素。

int[] arr = new int[] { 1, 2, 3, 4};
Arrays.parallelPrefix(arr, (left, right) -> left + right);
System.out.println(Arrays.toString(arr));

上面代码中有一个 Lambda 表达式((left, right) -> left + right),是什么意思呢?上面这段代码等同于:

int[] arr = new int[]{1, 2, 3, 4};
Arrays.parallelPrefix(arr, (left, right) -> {
    System.out.println(left + "," + right);
    return left + right;
});
System.out.println(Arrays.toString(arr));

来看一下输出结果就明白了:

1,2
3,3
6,4
[1, 3, 6, 10]

也就是说, Lambda 表达式执行了三次:

  • 第一次是 1 和 2 相加,结果是 3,替换下标为 1 的位置
  • 第二次是 3 和 3 相加,结果是 6,也就是第一次的结果和下标为 2 的元素相加的结果
  • 第三次是 6 和 4 相加,结果是 10,也就是第二次的结果和下标为 3 的元素相加的结果

10、总结

“好了,三妹,就先学到这吧。如果你以后翻 Java 源码的时候,只要是用到数组的,尤其是 ArrayList 类,就可以看到 Arrays 类的很多影子。”

“嗯嗯,我先复习一下这节的内容。哥,你去休息吧。”

我来到客厅,坐到沙发上,捧起黄永玉先生的《无愁河上的浪荡汉子·八年卷 1》看了起来,津津有味。。。。。。


最近整理了一份牛逼的学习资料,包括但不限于Java基础部分(JVM、Java集合框架、多线程),还囊括了 数据库、计算机网络、算法与数据结构、设计模式、框架类Spring、Netty、微服务(Dubbo,消息队列) 网关 等等等等……详情戳:可以说是2022年全网最全的学习和找工作的PDF资源了

关注二哥的原创公众号 沉默王二,回复111 即可免费领取。

来源:https://github.com/itwanger/toBeBetterJavaer/blob/master/docs/common-tool/arrays.md
教妹学Java:数组专用工具类 Java.util.Arrays 数组专用工具类 “哥,数组专用工具类是专门用来操作数组的吗?比如说创建数组、数组排序、数组检索等等。”三妹的提问其实已经把答案说了出来。 “是滴,这里说的数组专用工具类指的是 java.util.Arrays 类,基本上常见的数组操作,这个类都提供了静态方法可供直接调用。毕竟数组本身想完成这些操作还是挺麻烦的,有了这层封装,就方便多了。”在回答三妹的同时,我打开 Intellij IDEA,找到了 Arrays 类的源码。 package java.util; /** * @author Josh Blo 阅读详情

相关推荐

UOS的ARM机编译QT5.14.2记录

我需要的qt版本是Qt5.14.2,所以选择编译Qt5.14.2源码;几个月前尝试了编译一次,当时编译过程中出现了报错,当时时间很紧最后安装的默认版本来使用,最近有时间重新进行了一次编译,历经3个星期(4G的内存)终于解决了各种坑,编译成功了,现在将编译过程中遇见的一些坑记录一下,方便日后能记得这一次可恶的编译过程,如有描述欠缺的地方,还希望各位大佬给点意见指导指导🙏。

NiF693zzz的博客 1619

【Java 8 新特性】Java 8 数组并行更新示例 | 数组部分更新

Java 8 数组并行更新示例 | 数组部分更新Arrays.parallelPrefix() 在对象数组使用Arrays.parallelPrefix() 在基本数据类型数组使用参考文献 在这一页,我们将提供java 8 Arrays parallel prefix的例子。 Arrays.parallelPrefix()在给定的运算符的基础上更新数组。 假设我们有一个[2,1,3,5]的数组,我们正在执行加法运算,那么结果将是[2,3,6,11]。 我们传递的运算符是BinaryOperator,IntB

猫巳的博客 1194

【实用运维脚本】Windows 批量 TCP 端口检测(tcping 一键巡检)

摘要:本文介绍一款高效的Windows批量TCP端口检测脚本,适配tcpingv0.39工具,实现多服务器一键巡检。脚本具有进度可视化、双日志输出、自动容错等优势,支持注释行过滤和UTF-8编码。 使用仅需三步: 1)下载tcping工具 2)编辑目标列表 3)运行脚本即可自动检测并生成带编号的检测报告。 该方案解决了手动检测效率低、易遗漏的问题,特别适合日常运维中的端口连通性检查,实测稳定可靠,开箱即用。

蕲士|D365 & 服务器运维,心有东坡,行稳致远。 804

深入学习java源码之 Arrays.sort()与Arrays.parallelPrefix()

深入学习java源码之 Arrays.sort()与Arrays.parallelPrefix() Comparator接口 能对不同类型的对象进行排序(当然排序依据还是基本类型),也不用自己实现排序算法,用起来很方便。 对任意类型集合对象进行整体排序,排序时将此接口的实现传递给Collections.sort方法或者Arrays.sort方法排序。 实现int compare(T o1, ...

悦分享 3726

KUKA 虚拟调试实战——打通Simpro4.1与OfficeLite8.6的通信与实时控制链路

本文详细介绍了KUKA虚拟调试实战,重点解析如何打通Simpro4.1与OfficeLite8.6的通信与实时控制链路。通过环境搭建、权限配置、机器人型号匹配等关键步骤,帮助工程师高效完成机器人轨迹规划和PLC联锁逻辑验证,大幅降低真机调试风险。文章还提供了典型报错解决方案和实时控制优化技巧,适用于工业机器人仿真与培训场景。

weixin_30907935的博客 452

cordic算法的FPGA实现

cordic 算法的MATLAB仿真及verilog实现

qq_38360574的博客 1678

Arrays工具类

目录说在前面所含所有方法注:第18个函数binarySearch注:第29个函数equals和deepEquals的区别:parallelPrefix函数实例parallelSetAll函数实例通过parallelSort函数和Sort函数简单对比并行的执行效率关于第105个函数 说在前面 Arrays类中都是静态方法,没有属性 该类包含用于操作数组(如排序和搜索)的各种方法。该类还包含一个静态工厂,它允许将数组视为列表。 如果指定的数组引用为null,则该类中的方法都会抛出NullPointerExcep

点滴技术 481

Python从0到100(十九):Python标准库初探

哈希函数又称哈希算法或散列函数,是一种为已有的数据创建“数字指纹”(哈希摘要)的方法。哈希函数把数据压缩成摘要,对于相同的输入,哈希函数可以生成相同的摘要(数字指纹),需要注意的是这个过程并不可逆(不能通过摘要计算出输入的内容)。举一个简单的例子,用户注册时我们希望在数据库中保存用户的密码,很显然我们不能将用户密码直接保存在数据库中,这样可能会导致用户隐私的泄露,所以在数据库中保存用户密码时,通常都会将密码的“指纹”保存起来,用户登录时通过哈希函数计算密码的“指纹”再进行匹配来判断用户登录是否成功。

拥有百余位万粉技术博主、200余位可合作代发博主,私域技术社群规模达千人,商务合作私信 5004

java练习案例--定义数组工具类

利用简单案例学习定义与调用数组工具类---java

小库里的学习记录 1667

【WRF数据准备】生成 LCZ 对应的FRC_URB2D

WRF 静态地理数据准备

WW、forever的博客 414

YOLOv8进阶:SEAM注意力与Repulsion Loss双剑合璧,突破遮挡检测瓶颈

做目标检测时,最头疼的莫过于目标被遮挡的场景——行人被树木挡住一半、车辆被广告牌遮挡部分轮廓……这些情况往往让模型“犯迷糊”。但现在,有了SEAM注意力模块和Repulsion Loss排斥损失,我们就能让YOLOv8在遮挡场景下也能“拨开迷雾见真章”。这篇教程会带你一步步理解这两个技术,并亲手把它们融入YOLOv8,让你的检测模型在复杂场景下也能稳如泰山。

FJN110的博客 234

Arrays:专为数组而生的工具类

revised 和 expanded 是复制后的新数组,长度分别是 3 和 5,指定的数组长度是 4。revised 截取了最后一位,因为长度是 3 嘛;expanded 用 null 填充了一位,因为长度是 5。

qq_62636650的博客 1084

从苏宁电器到卡巴斯基第02篇:我的本科时光(中)

怎么还分班了呢? 大概是在大二第二学期的时候吧,学院突然通知我们要分班。因为我们目前所有学生都是属于工商管理专业的,而从下个学期开始,就要分为会计、市场营销以及工商管理这三个方向。这还真是打了我一个措手不及,我都不知道还有分班这一回事。不过也没关系,我继续选择我的工商管理就好了。不过,在实际的选择结果上,像会计和工商管理这种学科,选的人自然是占了绝大多数,而选择市场营销的,大概也就是十

Gleam的专栏 9608

java数组之数组工具类——Arrays的使用

介绍数组常用的工具类中的方法,已经常见的关于数组的异常。

weixin_44554794的博客 1787

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java基础06(数组进阶 Arrays工具类)

第一种方式是通过for循环:因为数组的每个元素都可以通过索引来访问,因此,使用标准的for循环可以完成一个数组的遍历:初始条件为i=0,因为索引总是从0开始,继续循环的条件为i < ns.length,因为当i = ns.length时,i已经超出了索引范围(索引范围是0 ~ ns.length-1),每次循环后,i++实现索引递增。

qq_52897007的博客 1446

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【Java杂记】工具类:数组工具类 Arrays

在文章开头,我们先看看工具类通用的特征: 构造器必须是私有的。这样的话,工具类就无法被 new 出来,因为工具类在使用的时候,无需初始化,直接使用即可,所以不会开放出构造器出来。 工具类的工具方法必须被 static、final 关键字修饰。这样的话就可以保证方法不可变,并且可以直接使用,非常方便。 我们需要注意的是,尽量不在工具方法中,对共享变量有做修改的操作访问(如果必须要做的话,必须加锁),因为会有线程安全的问题。除此之外,工具类方法本身是没有线程安全问题的,可以放心使用。 1.Arrays Ar

A minor 2197

Arrays工具类的常见方法总结

Arrays工具类的常见方法总结,Arrays 是 Java 标准库中的一个实用工具类,它包含了许多静态方法,用于操作数组。以下是一些 Arrays 工具类中常见方法的总结:

xzcxzc1q的博客 1942

Java Arrays工具类详解

全面性:覆盖数组操作的各个方面高效性:底层使用优化算法实现便利性:静态方法调用简单直接小数组直接使用Arrays方法大数组考虑使用并行方法(如需要复杂操作时可结合Stream API使用Java 17 Arrays文档。

weixin_52242569的博客 1370

【Java】Java Arrays 工具类详解

Java 数组操作工具类 java.util.Arrays 提供了丰富的静态方法,包含排序(sort()/parallelSort())、查找(binarySearch())、比较(equals()/deepEquals())、复制(copyOf())、填充(fill())等功能。它支持多维数组处理(deepToString())和并行操作(JDK8+),还能转换为Stream流进行函数式编程。使用时需注意:binarySearch()需先排序,asList()返回固定大小列表。简化了数组操作。

经天纬地,格物致理 1709

Java 工具类详解:Arrays、Collections、Objects 一篇通关

本文详解 Java 开发必备的三大工具类:Arrays、Collections、Objects。Arrays 专注数组操作,提供 sort 排序、binarySearch 查找、copyOf 复制等功能,需注意 asList 返回的 List 不可修改,基本类型数组转集合需用包装类。Collections 聚焦集合处理,支持排序、反转、生成同步 / 不可变集合,同步集合性能较低,高并发建议用并发集合。Objects 擅长对象空值处理与比较,isNull/nonNull 简化空判断,equals 避免空指针等

qq_40303030的博客 1394

java - 数组工具类Arrays

在Java中,Arrays是一个提供了各种数组操作的工具类。它包含了许多静态方法,用于对数组进行排序、搜索、复制、填充等操作。Arrays类可以用于处理基本类型数组和对象类型数组。Arrays类提供的方法可以大大简化对数组的操作,使得代码更加简洁和高效。它可以帮助开发人员快速完成常见的数组操作,而不需要手动编写复杂的循环和逻辑。

weixin_73869209的博客 2163

Java中Arrays数组工具类的使用全解

本文几乎涵盖了所有的Arrays工具类(基于Java 11)的方法以及使用用例,一站式带你了解Arrays类的用法,希望对大家有帮助。

soberw的日常分享博客 5630

数组的工具,Arrays工具类

Arrays工具类的常用方法,混个眼熟,别等用的时候找不到!!!

Best_jiangX的博客 1351

[疯狂Java]数组:Arrays(数组工具类)

1. Arrays工具类简介:     1) 是Java提供的专门用来操作数组的工具类,里面有一大堆静态方法(算法)来操作数组,低位就相当于C++ STL的库,只不过Arrays里面全部都是操作数组的算法,于此类似的是Collections工具类,里面全部都是操作集合的算法;     2) 里面大致分为两类方法,一类是单线方法(用于单线程处理数组),另一类是多线算法(大多以parallel作为

Lirx_Tech的专栏 5173

【Java基础】——集合工具类Collections和数组工具类Arrays

android培训------我的java笔记,期待与您交流! 一、集合工具类Collections 1、什么是Collections? Collections是对集合框架的一个工具类。它里边的方法都是静态的,不需要创建对象。并未封装特有数据。在Collections工具类中大部分方法是用于对List集合进行操作的,如比较,二分查找,随机排序等。 2、常见操作 ①查找 T ma

lucas的编程之旅 4056

Arrays-数组工具类

文章目录概念练习 概念 Arrays存放在util包下 java.util.Arrays是一个与数组相关的工具类,里面提供了大量静态方法,用来实现数组相关操作。 public static toString(数组):将参数数组变成字符串,(按照默认格式:[元素1,元素2,元素3]) public static void sort(数组):按照默认升序(从小到大)对数组的元素进行排序 备注: 如果是数值,sort默认按照从小 到大 如果是字符串,sort默认按照字母升序 如果是自定义的类型,那么这个自定义

m0_51045721的博客 787
上一篇: Java异常处理的20个最佳实践
下一篇: Java Collections:专为集合框架而生的工具类
码趣资源网
博客等级 码龄4年 269粉丝 518原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值