java java.util.arrays 取最大数_Java中数组操作 java.util.Arrays 类常用方法的使用

任何一门编程语言,数组都是最重要和常用的数据结构之一,但不同的语言对数组的构造与处理是不尽相同的。

java中提供了java.util.arrays 类能方便地操作数组,并且它提供的所有方法都是静态的。下面介绍一下arrays类最常用的几个方法。

1.  数组排序

arrays工具类提供了一个sort方法,只需要一行代码即可完成排序功能。

2.  数组转换为字符串

arrays提供了一个tostring方法,可以直接把一个数组转换为字符串,这样可以方便观察数组里的元素。

//来源:公众号【时光与字节】

//数组排序与转换为字符串

package basecode;

import java.util.arrays;

public class j4_1028_11 {

public static void main(string[] args) {

int[] ff= {11,3,25,71,9};

system.out.print("数组ff未排序: ");

for(int n:ff)

system.out.print(n+" ");

arrays.sort(ff); // 对数组进行排序

system.out.printf("\n数组ff排序后: ");

for(int n:ff)

system.out.print(n+" ");

//将数组转换为字符串

system.out.printf("\n数组ff转为字符串: "+arrays.tostring(ff));

}

}

运行结果

数组ff未排序:11 3 25 71 9

数组ff排序后:3 9 11 25 71

数组ff转为字符串:[3, 9, 11, 25, 71]

3.  数组元素的填充与替换

arrays提供了fill方法对数组(或数组指定位置)填充或替换为指定的值。

4.  判断数组是否相同

arrays.equals可以比较两个数组中的元素是否一样。

//来源:【时光与字节】

//fill方法和equals方法

package basecode;

import java.util.arrays;

public class j4_1028_12 {

public static void main(string[] args) {

int[] ff= new int[5];

arrays.fill(ff, 5);

system.out.print("数组全部元素填充为5: ");

for(int n:ff)

system.out.print(n+" ");

//将数组从第1个元素至第3个元素填充为7

//含第1个元素,不含第3个元素

arrays.fill(ff,1,3,7);

system.out.print("\n数组指定位置填充为7: ");

for(int n:ff)

system.out.print(n+" ");

int[] nn= new int[5];

arrays.fill(nn, 5);

system.out.printf("\nff与nn相同:"+arrays.equals(ff, nn));

}

}

运行结果

数组全部元素填充为5:5 5 5 5 5

数组指定位置填充为7:5 7 7 5 5

ff与nn相同:false

5.  复制数组

arrays类的copyof()方法和copyrange()方法可以实现对数组的复制。

copyof(arr, int newlength)

参数newlength为新数组的长度,即从数组arr的第0个位置开始,直到newlength结束,如果newlength大于arr的长度,后面按默认值填充。

copyofrange(arr, int formindex, int toindex)

参数formindex为从数组arr中取元素的开始位置,toindex为结束位置,但不包括该位置的元素,如toindex超出arr的长度,后面按默认值填充。

//来源:公众号【时光与字节】

//数组的复制,copyof与copyofrange的使用

package basecode;

import java.util.arrays;

public class j4_1028_10 {

public static void main(string[] args) {

int[] ff= {1,3,5,7,9};

//arrays.copyof复制数组至指定长度,从0开始

int[] newff1=arrays.copyof(ff, 3);

int[] newff2=arrays.copyof(ff, 6);

system.out.print("copyof的使用:\n数组newff1: ");

for(int n:newff1)

system.out.print(n+" ");

system.out.printf("\n数组newff2: ");

for(int n:newff2)

system.out.print(n+" ");

//arrays.copyofrange第二个参数为开始位置

//第三个参数为结束位置

int[] newff3=arrays.copyofrange(ff, 1, 4);

int[] newff4=arrays.copyofrange(ff, 1, 7);

system.out.printf("\ncopyofrange的使用:\n数组newff3: ");

for(int n:newff3)

system.out.print(n+" ");

system.out.printf("\n数组newff4: ");

for(int n:newff4)

system.out.print(n+" ");

}

}

运行结果

copyof的使用:

数组newff1:1 3 5

数组newff2:1 3 5 7 9 0

copyofrange的使用:

数组newff3:3 5 7

数组newff4:3 5 7 9 0 0

6.  元素查询

arrays类的binarysearch 方法可以查询元素出现的位置,返回元素的索引。但是注意,使用binarysearch进行查找之前,必须使用sort进行排序。并且如果数组中有多个相同的元素,查找结果是不确定的。

binarysearch(arr, object key)

如果key在数组中,则返回搜索值的索引;否则返回-1或者负的插入点值。

所谓插入点值就是第一个比key大的元素在数组中的索引,而且这个索引是从1开始的。

binarysearch(arr, int fromindex, int endindex, object key);

fromindex:指定范围的开始处索引(包含)

toindex:指定范围的结束处索引(不包含)

其搜索结果可分为以下四种情况:

该搜索键不在范围内,且大于范围(数组)内元素,返回 –(toindex + 1);

该搜索键不在范围内,且小于范围(数组)内元素,返回–(fromindex + 1);

该搜索键在范围内,但不是数组元素,由1开始计数,返回负的插入点索引值;

该搜索键在范围内,且是数组元素,由0开始计数,返回搜索值的索引值;

可参看下面的示例代码及注释

//来源:公众号【时光与字节】

//查找数组元素:binarysearch 方法的使用

package basecode;

import java.util.arrays;

public class j4_1028_13 {

public static void main(string[] args) {

int[] fn= {1,3,5,7,9};

arrays.sort(fn);//查找前先排序

int cx1=arrays.binarysearch(fn,5);//返回2 ,找到了关键字,索引从0开始

//未找到6,返回的是负的插入点值,

//6在数组中的插入点是元素7的索引,

//元素7的索引从1开始算就是4,所有返回-4

int cx2=arrays.binarysearch(fn,6);//未找到,返回-4,插入点7的索引是4

int cx3=arrays.binarysearch(fn,4);//未找到,返回-3,插入点5的索引是3

system.out.println("不指定查找范围示例:");

system.out.println("数组fn的内容:"+arrays.tostring(fn));

system.out.printf("[5]找到:cx1=%d%n", cx1);

system.out.printf("[6][4]未找到:cx2=%d, cx3=%d%n", cx2,cx3);

//在数组的指定位置查找元素,参数范围(1,3)包含的数组元素为[3,5]

//该搜索键不在范围内,且大于范围(数组)内元素,返回 –(toindex + 1)。

int cx4=arrays.binarysearch(fn,1,3,10);

//该搜索键不在范围内,且小于范围(数组)内元素,返回–(fromindex + 1);

int cx5=arrays.binarysearch(fn,1,3,-3);

//该搜索键在范围内,但不是数组元素,由1开始计数,返回负的插入点索引值

int cx6=arrays.binarysearch(fn,1,3,4);

//该搜索键在范围内,且是数组元素,由0开始计数,返回搜索值的索引值

int cx7=arrays.binarysearch(fn,1,3,5);

system.out.println("-------------------------");

system.out.println("用参数指定查找范围示例:");

system.out.println("第一种情况:cx4= "+cx4);

system.out.println("第二种情况:cx5= "+cx5);

system.out.println("第三种情况:cx6= "+cx6);

system.out.println("第四种情况:cx7= "+cx7);

}

}

运行结果

不指定查找范围示例:

数组fn的内容:[1, 3, 5, 7, 9]

[5]找到:cx1=2

[6][4]未找到:cx2=-4, cx3=-3

-------------------------

用参数指定查找范围示例:

第一种情况:cx4= -4

第二种情况:cx5= -2

第三种情况:cx6= -3

第四种情况:cx7= 2

希望与广大网友互动??

点此进行留言吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值