Java-Arrays工具类的常见方法总结

在Java中,提供了一个专门用于操作数组的工具类,即Arrays类,该类提供了一些方法对数组进行排序,打印,复制等操作。下面是一些该工具类方法总结。

1.Arrays.aslist()

作用:当我们想直接将数组中的全部内容(或一组相同类型的参数)以List(集合)类型返回时,就可以用到Arrays的aslist()方法,例

	public static void main(String[] args) {
		int[] arr= {0,1,2,3,4,5};
		//传入数组
		List<int[]> List=Arrays.asList(arr);
		//传入一组动态参数
		List<Integer> List1=Arrays.asList(0,1,2,3,4,5);
		System.out.println(List1);
	}

该方法解析:先看一段源码

  显然,源代码中Arrays.aslist的参数是一组动态参数,所以可以传入数组或一组内容(必须为引用类型),传入的参数返回为List<T>集合,即可实现将数组或一组数据转化为List(集合)。

2.Arrays.binarySearch()

通过上面可以看出该方法在Arrays类中大量重载,即可以传入不同类型(类型不同,数量不同,顺序不同)的参数,根据传入参数的不同,使用的场景不同。

参数:(数组名称,目标元素)

返回值:返回int类型数据,即目标元素在数组中的下标

方法的主要作用:在数组中查找目标元素,例:

		int[] arr= {0,1,2,3,4,5};
		int index=Arrays.binarySearch(arr,4);
		System.out.println(index);

观察其源码, 其内部返回了一个binarySearch0方法,该方法被私有化,传入参数(数组,数组起始下标,数组结束下标,目标元素),方法体为一段二分查找的典型代码,在二分查找找到目标元素后返回int类型,即目标元素下标。二分查找必须是有序数组,所以该方法传入的数组也必须为有序数组

3. Arrays.copyOf()

可以看出该方法内部也是发生了大量重载,即可以传入不同类型(类型不同,数量不同,顺序不同)的参数,根据传入参数的不同,使用的场景不同。

参数:(数组名称,复制数组长度)

例:

	    int[] arr= {0,1,2,3,4,5};
		int[] arrnew=Arrays.copyOf(arr, 3);
		//打印复制的新数组内容
		System.out.println(Arrays.toString(arrnew));//运行结果[0, 1, 2]

该方法作用:将传入的数组从首元素开始复制,复制的个数为传入的数组长度(即传入的第二个参数),返回一个复制过的新的数组

观察源码,可以看出该方法例提供了一个新的数组,通过System的arraycopy方法将原数组中元素按照传入下标复制到新的数组,返回该数组

 4.Arrays.copyOfRange()

可以看出该方法内部也是发生了大量重载,即可以传入不同类型(类型不同,数量不同,顺序不同)的参数,根据传入参数的不同,使用的场景不同。

参数:(数组名称,开始复制下标,结束复制下标) 

先看实例:

	    int[] arr= {0,1,2,3,4,5};
		int[] arrnew=Arrays.copyOfRange(arr,1,3);
		//打印复制的新数组内容
		System.out.println(Arrays.toString(arrnew));//运行结果[ 1, 2]

方法作用:将传入的数组从传入的参数开始复制下标位置(包含该位置元素)开始复制,复制到结束复制下标位置(不包含该位置元素),返回一个复制的新数组

观察其源码:可以看出该方法中先判断了新的数组长度如果<0,则抛出异常,若>0,则定义一个新的数组, 再通过System的arraycopy方法将原数组中元素按照传入下标复制到新的数组,返回该数组

5.Arrays.fill()

可以看出该方法内部也是发生了大量重载,即可以传入不同类型(类型不同,数量不同,顺序不同)的参数,根据传入参数的不同,使用的场景不同。

参数:(数组名称,要填充的内容)

实例:

	    int[] arr= {0,1,2,3,4,5};
		Arrays.fill(arr, 1);
		//打印填充后的新数组内容
		System.out.println(Arrays.toString(arr));//运行结果[1, 1, 1, 1, 1, 1]

该方法作用:用传入的参数填充数组

观察源码:可知传入参数后,利用for循环遍历将原数组中所有元素替换为新的元素

区间填充: 参数(数组名称,填充的初始下标,填充的结束下标,要填充的内容)

通过源码可知,该方法通过传入的两个下标为起始位置和结束位置进行填充

例:

	    int[] arr= {0,1,2,3,4,5};
		Arrays.fill(arr, 1, 3, 1);
		//打印填充后的新数组内容
		System.out.println(Arrays.toString(arr));//运行结果[0, 1, 1, 3, 4, 5]

 6.Arrays.sort()

参数:(数组名称)

该方法也是重载的方法,方法作用:对数组从小到大进行排序

	    int[] arr= {0,1,2,3,4,5};
		Arrays.sort(arr);
		//排序后的新数组内容
		System.out.println(Arrays.toString(arr));//运行结果[0, 1, 2, 3, 4, 5]

观察其源码:可以看出其内部返回了DualPivotQuicksort类的sort方法,而这个方法中实现了快速排序算法(暂时不展现该排序算法的完整代码),返回排序后的新的数组 

 

 因为sort是继承自最终父类Object类中的方法,所以自定义引用类型数组需重写sort方法。

7.Arrays.toString()

方法作用:打印数组中所以元素

参数:(数组名称)

观察源码,可有看出该方法先检查了该数组是否为空,若为空,返回null,不为空检查数组长度,若数组长度-1结果为-1,则说明该数组是空数组,返回"[]",都不满足,创建一个StringBuilder对象,首尾分为添加"[","]",中间添加所以数组元素,返回对象b

  • 48
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值