java arrays类详解_Java中的Arrays类使用详解

首先先创建一个打印数组的方法,方便后面直接使用

public static void output(int []a) { for(int i=0;i

1、填充数组:fill

eg1.

int []arr = new int[5];

Arrays.fill(arr, 2); output(arr);

结果是:2 2 2 2 2

分析:给所有值赋值2

eg2.

int []arr = new int[5];

Arrays.fill(arr, 1,3,8); output(arr);

结果是:0 8 8 0 0

分析:给第1位(0开始)到第3位(不包括)赋值8

2、数组元素排序:sort

eg1.

int []arr = {3,2,1,5,4};

Arrays.sort(arr);

output(arr);

结果是:1 2 3 4 5

分析:给所有数按升序排序

eg2.

int []arr = {3,2,1,5,4};

Arrays.sort(arr,1,3);

output(arr);

结果是:3 1 2 5 4

分析:给第1位(0开始)到第3位(不包括)排序

3、比较数组元素是否相等:equals

int []arr1 = {1,2,3};

int []arr2 = {1,2,3}; System.out.println(Arrays.equals(arr1,arr2));

结果是:true

分析:如果是arr1.equals(arr2),则返回false,因为equals比较的是两个对象的地址,不是里面的数,而Arrays.equals重写了equals,所以,这里能比较元素是否相等。

这里补充一下,如果还是不用Arrays.equals,那么我们应该如何重写equals来比较两个数组的元素是否相等呢?这里提供一段代码

//Compare the contents of two int arrays

public static boolean isEquals(int[] a, int[] b) { if( a == null || b == null ) { return false; } if(a.length != b.length) { return false; } for(int i = 0; i < a.length; ++i ) { if(a[i] != b[i]) { return false; } } return true; }

4、二分查找法找指定元素的索引值(下标):binarySearch

数组一定是排好序的,否则会出错。找到元素,只会返回最后一个位置

eg1:

int []arr = {10,20,30,40,50}; System.out.println(Arrays.binarySearch(arr, 20));

结果是:1

分析:能找到该元素,返回下标为1(0开始)

eg2:

int []arr = {10,20,30,40,50}; System.out.println(Arrays.binarySearch(arr, 35));

结果是:-4

分析:找不到元素,返回-x,从-1开始数,如题,返回-4

eg3:

int []arr = {10,20,30,40,50}; System.out.println(Arrays.binarySearch(arr, 0,3,30));

结果是:2

分析:从0到3位(不包括)找30,找到了,在第2位,返回2

eg4:

int []arr = {10,20,30,40,50}; System.out.println(Arrays.binarySearch(arr, 0,3,40));

结果是:-4

分析:从0到3位(不包括)找40,找不到,从-1开始数,返回-4

5、截取数组:copeOf和copeOfRange

eg1: copy

int []arr = {10,20,30,40,50}; int []arr1 = Arrays.copyOf(arr, 3); output(arr1);

结果:10 20 30

分析:截取arr数组的3个元素赋值给姓数组arr1

eg2: copyOfRange

int []arr = {10,20,30,40,50}; int []arr1 = Arrays.copyOfRange(arr,1,3); output(arr1);

结果:20 30

分析:从第1位(0开始)截取到第3位(不包括)

6、其他

还有hashCode,toString,clone等这里就不介绍了,暂时用的少

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值