百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

Java教程:JavaArrays工具类(arrays工具类常用方法)

toyiye 2024-09-07 00:38 2 浏览 0 评论

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念。Java不但可以用来开发网站后台、PC客户端和AndroidAPP,还在数据分析、网络爬虫、云计算领域大显身手。今天为大家解读的是JavaArrays工具类

Arrays类是一个工具类,其中包含了数组操作的很多方法。这个Arrays类里均为static修饰的方法(static修饰的方法可以直接通过类名调用),可以直接通过Arrays.xxx(xxx)的形式调用方法。

1)intbinarySearch(type[]a,typekey)

使用二分法查询key元素值在a数组中出现的索引,如果a数组不包含key元素值,则返回负数。调用该方法时要求数组中元素己经按升序排列,这样才能得到正确结果。

2)intbinarySearch(type[]a,intfromIndex,inttoIndex,typekey)

这个方法与前一个方法类似,但它只搜索a数组中fromIndex到toIndex索引的元素。调用该方法时要求数组中元素己经按升序排列,这样才能得到正确结果。

3)type[]copyOf(type[]original,intlength)

这个方法将会把original数组复制成一个新数组,其中length是新数组的长度。如果length小于original数组的长度,则新数组就是原数组的前面length个元素,如果length大于original数组的长度,则新数组的前面元索就是原数组的所有元素,后面补充0(数值类型)、false(布尔类型)或者null(引用类型)。

4)type[]copyOfRange(type[]original,intfrom,intto)

这个方法与前面方法相似,但这个方法只复制original数组的from索引到to索引的元素。

5)booleanequals(type[]a,type[]a2)

如果a数组和a2数组的长度相等,而且a数组和a2数组的数组元素也一一相同,该方法将返回true。

6)voidfill(type[]a,typeval)

该方法将会把a数组的所有元素都赋值为val。

7)voidfill(type[]a,intfromIndex,inttoIndex,typeval)

该方法与前一个方法的作用相同,区别只是该方法仅仅将a数组的fromIndex到toIndex索引的数组元素赋值为val。

8)voidsort(type[]a)

该方法对a数组的数组元素进行排序。

9)voidsort(type[]a,intfromIndex,inttoIndex)

该方法与前一个方法相似,区别是该方法仅仅对fromIndex到toIndex索引的元素进行排序。

10)StringtoString(type[]a)

该方法将一个数组转换成一个字符串。该方法按顺序把多个数组元素连缀在一起,多个数组元素使用英文逗号,和空格隔开。

下面程序示范了Arrays类的用法。

publicclassArraysTest{

publicstaticvoidmain(String[]args){

//定义一个a数组

int[]a=newint[]{3,4,5,6};

//定义一个a2数组

int[]a2=newint[]{3,4,5,6};

//a数组和a2数组的长度相等,毎个元素依次相等,将输出true

System.out.println("a数组和a2数组是否相等:"+Arrays.equals(a,a2));

//通过复制a数组,生成一个新的b数组

int[]b=Arrays.copyOf(a,6);

System.out.println("a数组和b数组是否相等:"+Arrays.equals(a,b));

//输出b数组的元素,将输出[3,4,5,6,0,0]

System.out.println("b数组的元素为:"+Arrays.toString(b));

//将b数组的第3个元素(包括)到第5个元素(不包括)賦值为1

Arrays.fill(b,2,4,1);

//输出b数组的元素,将输出[3,4,1,1,0,0]

System.out.println("b数组的元素为:"+Arrays.toString(b));

//对b数组进行排序

Arrays.sort(b);

//输出b数组的元素.将输出[0,0,1,1,3,4]

System.out.println("b数组的元素为:"+Arrays.toString(b));

}

}

Arrays类处于java.util包下,为了在程序中使用Arrays类,必须在程序中导入java.util.Arrays类。

除此之外,在System类里也包含了一个staticvoidarraycopy(Objectsrc,intsrePos,Objectdest,intdcstPos,intlength)方法,该方法可以将src数组里的元素值赋给dest数组的元素,其中srcPos指定从src数组的第几个元素开始赋值,length参数指定将src数组的多少个元素值赋给dest数组的元素。

Java8增强了Arrays类的功能,为Arrays类增加了一些工具方法,这些工具方法可以充分利用多CPU并行的能力来提高设值、排序的性能。下面是Java8为Arrays类增加的工具方法。

提示:由于计算机硬件的飞速发展,目前几乎所有家用PC都是4核、8核的CPU,而服务器的CPU则具有更好的性能,因此Java8与时俱进地增加了并发支持,并发支持可以充分利用硬件设备来提高程序的运行性能。

1)oidparallelPrefix(xxx[]array,XxxBinaryOperatorop)

该方法使用op参数指定的计算公式计算得到的结果作为新的元素。op计算公式包括left、right两个形参,其中left代表数组中前一个索引处的元素,right代表数组中当前索引处的元素,当计算第一个新数组元素时,left的值默认为1。

2)voidparallelPrefix(xxx[]array,intfromIndex,inttoIndex,XxxBinaryOperatorop)

该方法与上一个方法相似,区别是该方法仅重新计算fromIndex到toIndex索引的元素。

3)voidsetAll(xxx[]array,IntToXxxFunctiongenerator)

该方法使用指定的生成器(generator)为所有数组元素设置值,该生成器控制数组元素的值的生成算法。

4)voidparallelSetAll(xxx[]array,IntToXxxFunctiongenerator)

该方法的功能与上一个方法相同,只是该方法增加了并行能力,可以利用多CPU并行来提高性能。

5)voidparallelSort(xxx[]a)

该方法的功能与Arrays类以前就有的sort()方法相似,只是该方法增加了并行能力,可以利用多CPU并行来提高性能。

6)voidparallelSort(xxx[]a,intfromIndex,inttoIndex)

该方法与上一个方法相似,区別是该方法仅对fromIndex到toIndex索引的元素进行排序。

7)Spliterator.OfXxxspliterator(xxx[]array)

将该数组的所有元素转换成对应的Spliterator对象。

8)Spliterator.OfXxxspliterator(xxx[]array,intstartInclusive,intendExclusive)

该方法与上一个方法相似,区别是该方法仅转换startInclusive到endExclusive索引的元素。

9)XxxStreamstream(xxx[]array)

该方法将数组转换为Stream,Stream是Java8新增的流式编程的API。

10)XxxStreamstream(xxx[]array,intstartInclusive,intendExclusive)

该方法与上一个方法相似,区别是该方法仅将fromIndex到toIndex索引的元索转换为Stream。

上面方法列表中,所有以parallel开头的方法都表示该方法可利用CPU并行的能力来提高性能。上面方法中的xxx代表不同的数据类型,比如处理int[]型数组时应将xxx换成int,处理long[]型数组时应将XXX换成long。

下面程序示范了Java8为Arrays类新增的方法。

下面程序用到了接口、匿名内部类的知识,读者阅读起来可能有一定的困难,此处只要大致知道Arrays新增的这些新方法就行,暂时并不需要读者立即掌握该程序,可以等到掌握了接口、匿名内部类后再来学习下面程序。

publicclassArraysTest2{

publicstaticvoidmain(String[]args){

int[]arr1=newint[]{3,4,25,16,30,18};

//对数组arr1进行并发排序

Arrays.parallelSort(arr1);

System.out.println(Arrays.toString(arr1));

int[]arr2=newint[]{13,-4,25,16,30,18};

Arrays.parallelPrefix(arr2,newIntBinaryOperator(){

//left代表数组中前一个索引处的元素,计算第一个元素时,left为1

//right代表数组中当前索引处的元素

publicintapplyAsInt(intleft,intright){

returnleft*right;

}

});

System.out.println(Arrays.toString(arr2));

int[]arr3=newint[5];

Arrays.parallelSetAll(arr3,newIntUnaryOperator(){

//operand代表正在计算的元素索引

publicintapplyAsInt(intoperand){

returnoperand*5;

}

});

System.out.println(Arrays.toString(arr3));

}

}

上面程序中第一行粗体字代码调用了parallelSort()方法对数组执行排序,该方法的功能与传统sort()方法大致相似,只是在多CPU机器上会有更好的性能。

第二段粗体字代码使用的计算公式为left*right,其中left代表数组中当前一个索引处的元素,right代表数组中当前索引处的元素。程序使用的数组为:

{3,-4,25,16,30,18)

计算新的数组元素的方式为:

{1*3=3,3*-4—12,-12*25=-300,-300*16=—48000,-48000*30=—144000,-144000*18=-2592000}

因此将会得到如下新的数组元素:

{3,-12,-300,-4800,-144000,-2592000)

第三段粗体字代码使用operand*5公式来设置数组元素,该公式中operand代表正在计算的数组元素的索引。因此第三段粗体字代码计算得到的数组为:

{0,5,10,15,20}

相关推荐

# Python 3 # Python 3字典Dictionary(1)

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,格式如...

Python第八课:数据类型中的字典及其函数与方法

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值...

Python中字典详解(python 中字典)

字典是Python中使用键进行索引的重要数据结构。它们是无序的项序列(键值对),这意味着顺序不被保留。键是不可变的。与列表一样,字典的值可以保存异构数据,即整数、浮点、字符串、NaN、布尔值、列表、数...

Python3.9又更新了:dict内置新功能,正式版十月见面

机器之心报道参与:一鸣、JaminPython3.8的热乎劲还没过去,Python就又双叒叕要更新了。近日,3.9版本的第四个alpha版已经开源。从文档中,我们可以看到官方透露的对dic...

Python3 基本数据类型详解(python三种基本数据类型)

文章来源:加米谷大数据Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在Python中,变量就是变量,它没有类型,我们所说的"类型"是变...

一文掌握Python的字典(python字典用法大全)

字典是Python中最强大、最灵活的内置数据结构之一。它们允许存储键值对,从而实现高效的数据检索、操作和组织。本文深入探讨了字典,涵盖了它们的创建、操作和高级用法,以帮助中级Python开发...

超级完整|Python字典详解(python字典的方法或操作)

一、字典概述01字典的格式Python字典是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。字典的每个键值key=>value对用冒号:分割,每个对之间用逗号,...

Python3.9版本新特性:字典合并操作的详细解读

处于测试阶段的Python3.9版本中有一个新特性:我们在使用Python字典时,将能够编写出更可读、更紧凑的代码啦!Python版本你现在使用哪种版本的Python?3.7分?3.5分?还是2.7...

python 自学,字典3(一些例子)(python字典有哪些基本操作)

例子11;如何批量复制字典里的内容2;如何批量修改字典的内容3;如何批量修改字典里某些指定的内容...

Python3.9中的字典合并和更新,几乎影响了所有Python程序员

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

Python3大字典:《Python3自学速查手册.pdf》限时下载中

最近有人会想了,2022了,想学Python晚不晚,学习python有前途吗?IT行业行业薪资高,发展前景好,是很多求职群里严重的香饽饽,而要进入这个高薪行业,也不是那么轻而易举的,拿信工专业的大学生...

python学习——字典(python字典基本操作)

字典Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包含的元素个数不限,值...

324页清华教授撰写【Python 3 菜鸟查询手册】火了,小白入门字典

如何入门学习python...

Python3.9中的字典合并和更新,了解一下

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

python3基础之字典(python中字典的基本操作)

字典和列表一样,也是python内置的一种数据结构。字典的结构如下图:列表用中括号[]把元素包起来,而字典是用大括号{}把元素包起来,只不过字典的每一个元素都包含键和值两部分。键和值是一一对应的...

取消回复欢迎 发表评论:

请填写验证码