首页 > 编程知识 正文

java中array用法,Array类

时间:2023-05-06 04:56:00 阅读:53587 作者:1010

Arrays类是包含数组操作的许多方法的工具类。 此Arrays类都有静态限定的方法,静态限定的方法可以直接从类名调用。 方法可以直接以arrays.XXX(XXX )的形式调用。

1 ) intbinarysearch(type[]a,type key ) )。

使用二分法查询数组a中出现的关键元素值的索引,如果数组a不包含关键元素值,则返回负数。 要调用此方法,必须按升序排列数组中的元素,以获得正确的结果。

2 ) intbinarysearch(type[]a,int fromIndex,int toIndex,type key ) )。

此方法类似于前面的方法,只是搜索a数组中从fromIndex到toIndex索引的元素。 要调用此方法,必须按升序排列数组中的元素,以获得正确的结果。

3 ) type[]copyof(type[]original,int length ) ) )。

此方法将original数组复制到新数组中。 其中length是新数组的长度。 如果length小于original数组的长度,则新数组是原始数组的第一个length个元素;如果length大于original数组的长度,则新数组的第一个元电缆是原始数组的所有元素,然后是0 (数

4 ) type [ ] copyofrange (type [ ] original,int from,int to ) )。

此方法类似于前面的方法,只是复制original数组中从from索引到to索引的元素。

5 )布尔表达式(type[] a2,type[] a2 ) )。

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

6 )语音文件(type [ ] a,type val ) )。

此方法将a数组中的所有元素分配给val。

7 ) void文件(type [ ] a,int fromIndex,int toIndex,type val ) )。

除了只是将val从a数组的fromIndex赋值给toIndex索引的数组元素之外,此方法与前面的方法的工作方式相同。

8 ) void sort (类型[ ] a ) ) )

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

9 ) void sort (类型[ ] a,int fromIndex,int toIndex ) ) ) ) ) ) )。

此方法类似于前面的方法,不同之处在于只对索引从fromIndex到toIndex的元素进行排序。

10 )字符串tostring (type [ ] a ) )。

方法将数组转换为字符串。 此方法按顺序连接多个数组元素。 多个数组元素使用以空格分隔的英语逗号。

以下程序说明了如何使用Arrays类。

公共类阵列测试{

publicstaticvoidmain (字符串[ ] args ) {

定义//A数组

int [ ] a=new int [ ] { 3、4、5、6 };

定义//A2数组

int [ ] a2=new int [ ] { 3、4、5、6 };

如果//a阵列和a-2阵列的长度相等,并且各个元素按顺序相等,则输出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 );

//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 );

//B对数组进行排序

Arrays.sort(b;

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

system.out.println(b数组的元素为(Arrays.toString(b ) b );

}

}

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

除此之外,在 System 类里也包含了一个static void arraycopy(Object src, int srePos, Object dest, int dcstPos, int length)方法,该方法可以将 src 数组里的元素值赋给 dest 数组的元素,其中 srcPos 指定从 src 数组的第几个元素开始赋值,length 参数指定将 src 数组的多少个元素值赋给 dest 数组的元素。

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

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

1)oid parallelPrefix(xxx[] array, XxxBinaryOperator op)

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

2)void parallelPrefix(xxx[] array, int fromIndex, int toIndex, XxxBinaryOperator op)

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

3)void setAll(xxx[] array, IntToXxxFunction generator)

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

4)void parallelSetAll(xxx[] array, IntToXxxFunction generator)

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

5)void parallelSort(xxx[] a)

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

6)void parallelSort(xxx[] a,int fromIndex, int toIndex)

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

7)Spliterator.OfXxx spliterator(xxx[] array)

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

8)Spliterator.OfXxx spliterator(xxx[] array, int startInclusive, int endExclusive)

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

9)XxxStream stream(xxx[] array)

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

10)XxxStream stream(xxx[] array, int startInclusive, int endExclusive)

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

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

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

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

public class ArraysTest2 {

public static void main(String[] args) {

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

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

Arrays.parallelSort(arr1);

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

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

Arrays.parallelPrefix(arr2, new IntBinaryOperator() {

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

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

public int applyAsInt(int left, int right) {

return left * right;

}

});

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

int[] arr3 = new int[5];

Arrays.parallelSetAll(arr3, new IntUnaryOperator() {

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

public int applyAsInt(int operand) {

return operand * 5;

}

});

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

}

}

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

第12行代码使用的计算公式为 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)

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

{0, 5, 10, 15, 20}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。