千峰Java教程:033. Arrays工具类

16、Arrays工具类

Arrays工具类:用来操作数组(比如排序和搜索)的各种方法

 

常用方法:

使用二分法查找Arrays.binarySearch(int[] array,int value);
数组转成字符串的形式输出Arrays.toString(int[] array);
数组排序Arrays.sort(int[] array);
复制指定的数组

Arrays.copyOf(int[] array,int length);(这个括号里第一个是源数组数组,第二个是新数组长度)

Arrays.copyOfRange(int[] array,int from,int to);(这个括号里第一个是源数组,后两个是截取数组的下标)

System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length

);

     

判断两个数组是否相等

Array.equals(int[] array1,int[] array2);

使用制定元素填充数组Array.fill(int[] array,int x);

比如我们用Arrays的二分法查找数组元素下标20和100:

import java.util.Arrays;//使用Arrays类的时候要把Arrays类引入,Arrays类在java.util里,别忘加英文分号
public class a
{
	public static void main(String[] args)
	{
		int[] num = {10, 20, 50, 65, 88, 90};
		int key1 = Arrays.binarySearch(num, 20);//记住,如果找到这个数字,返回的就是数字的下标,找不到,返回一个负数
		int key2 = Arrays.binarySearch(num, 100);
		System.out.println("找到20的下标是:"+key1+"\t100的下标是:"+key2);
	}
}

我们想找Java.util.Arrays,首先进到jdk1.8.0_192(我下载的jdk是这个版本,后面会有新的版本),解压src.zip,出现java文件夹,打开后里面有util文件夹,再打开,里面有Arrays.java,用Notepad++打开,按ctrl+F,搜索binarySearch,可以找到这个方法,但是这个方法又调用了binarySearch0的方法,点查找下一个6次左右会出现方法画面,与32的方法如出一辙。

1、

2、找到这个(ctrl+F,输入binarySearch)

3、再那里面输入binarySearch0,找3次,就可以看见方法了

再看数组转成字符串形式输出:

import java.util.Arrays;//使用Arrays类的时候要把Arrays类引入,Arrays类在java.util里,别忘加英文分号
public class a
{
	public static void main(String[] args)
	{
		int[] num = {10, 65, 86, 20, 50, 90};
		String  n = Arrays.toString(num);
		System.out.print(n);
	}
}
/*输出情况:
[10, 65, 86, 20, 50, 90]
*/
//这个方法在输出测试数组时可以使用,更加方便

找Arrays.toString(int[] num);与上面找Arrays.binarySearch(int[] num,int key);一样。

然后是排序:

import java.util.Arrays;//使用Arrays类的时候要把Arrays类引入,Arrays类在java.util里,别忘加英文分号
public class a
{
	public static void main(String[] args)
	{
		int[] num = {10, 65, 86, 20, 50, 90};
		Arrays.sort(num);//这个排序是快速排序
		System.out.print(Arrays.toString(num));
	}
}
//这个方式只能这样写,Arrays.sort();返回值是void(空),Arrays.toString(这里不能是空);,所以Arrays.toString(Arrays.sort(num));是不对的

数组的复制:

//第一种方法:
import java.util.Arrays;
public class a
{
	public static void main(String[] args)
	{
		int[] num = {10, 65, 86, 20, 50, 90};
		int[] num2 = Arrays.copyOf(num , 10);
		System.out.println(Arrays.toString(num2));
	}
}
/*结果:
[10, 65, 86, 20, 50, 90, 0, 0, 0, 0]
*///整数默认值是0

//第二种方法:
import java.util.Arrays;
public class a
{
	public static void main(String[] args)
	{
		int[] num = {10, 65, 86, 20, 50, 90};
		int[] num2 = Arrays.copyOfRange(num , 2 ,10);
		System.out.println(Arrays.toString(num2));
	}
}
//这里也可以“溢位复制”
/*结果:
[86, 20, 50, 90, 0, 0, 0, 0]
*/

//第三种方法:
import java.util.Arrays;
public class a
{
	public static void main(String[] args)
	{
		int[] num = {10, 65, 86, 20, 50, 90};
		int[] newNum = new int[num.length];
		System.arraycopy(num, 1, newNum, 3, 3);//这个返回值是void
		System.out.println(Arrays.toString(newNum));
	}
}
/*结果为:
[0, 0, 0, 65, 86, 20]
*/
/*首先num有6个元素拷贝从num开始,从下标1的元素开始,复制到newNum的第3个元素开始复制,复制3个数。*/

小结:数组复制,由高到低为:System.arraycopy() > Arrays.copyOf() > for 。

判断两个数是否相等:

import java.util.Arrays;
public class a
{
	public static void main(String[] args)
	{
		int[] num1 = {10, 65, 86, 20, 50, 90};
		int[] num2 = {10, 65, 86, 20, 50, 90};
		int[] newNum = new int[num1.length];
		System.arraycopy(num1, 1, newNum, 3, 3);
		System.out.println(Arrays.equals(num1, newNum));
		System.out.println(Arrays.equals(num1, num2));
	}
}
/*结果:
false
true
*/

填充数组:

import java.util.Arrays;
public class a
{
	public static void main(String[] args)
	{
		int[] num = {10, 65, 86, 20, 50, 90};
		int[] newNum = new int[num.length];
		System.arraycopy(num, 1, newNum, 3, 3);
		System.out.println(Arrays.toString(newNum));
		Arrays.fill(newNum, 5);
		System.out.println(Arrays.toString(newNum));
	}
}
/*结果:
[0, 0, 0, 65, 86, 20]
[5, 5, 5, 5, 5, 5]
*/

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值