Arrays工具类的常见方法总结

今天,让我们了解一下Arrays工具类的常见方法的作用、参数、返回值、实例以及源代码解读吧!

一、Arrays.asList()

1.作用:返回由指定数组支持的固定大小的列表

2.参数:动态参数  asList​(T… a)

3.返回值:一个列表

4.实例:

List<String> list = Arrays.asList("Hello","World");
System.out.println(list);//[Hello, World]

5.源代码解析:

调用Arrays工具类的asList()方法;传入一个动态数组,返回一个列表

二、Arrays.binarySearch()

1.作用:使用二分查找法快速查找指定的值(前提是数组必须是有序的,支持lambda表达式,泛型)

2.参数:binarySearch​(Object[] a [int fromIndex, int toIndex], Object key)

  • 参数1:要查找的数组
  • 参数2:开始结束位置(可无)
  • 参数3:需要查找的元素值

3.返回值:有则返回对应下标,无则返回负值

4.实例:

//找到元素3所在位置
int[] array = {1,3,5,7,9,4,6,2};
Arrays.sort(array);//必须先排序
System.out.println(Arrays.toString(array));//[1, 2, 3, 4, 5, 6, 7, 9]
int index = Arrays.binarySearch(array, 3);
System.out.println(index);//2

5.源代码解析:

 调用Arrays工具类的binarySearch​()方法;传入参数,利用二分查找找指定元素,找到则返回下标,找不到则返回负数

三、Arrays.copyOf()

1.作用:复制填充数组(只可以指定原数组以及新数组的复制长度)

2.参数:copyOf(T[] original, int newLength)

  • 参数1:被复制数组
  • 参数2:新数组的长度

3.返回值: 复制后的新数组

4.实例:

int[] array = {1, 2, 3, 4, 5, 6, 7, 9};
System.out.println("原数组"+Arrays.toString(array));//[1, 2, 3, 4, 5, 6, 7, 9]
int[] array1 = Arrays.copyOf(array, 5);//复制长度为5,第二个参数为新数组的长度
int[] array2 = Arrays.copyOf(array, 15);//新数组长度为15,原数组复制完后,其余补为默认值
System.out.println("复制长度为5的新数组"+Arrays.toString(array1));//[1, 2, 3, 4, 5]
System.out.println("复制长度为15的新数组"+Arrays.toString(array2));//[1, 2, 3, 4, 5, 6, 7, 9, 0, 0, 0, 0, 0, 0, 0]

5.源代码解析:

 调用Arrays工具类的copyOf​()方法;传入参数,根据原数组和复制后数组的长度,返回复制完后的数组,原数组复制完,其余长度位置补默认值。

四、Arrays.copyOfRange()

1.作用:复制填充数组( Arrays.copyOf() 基础上可以指定新数组从什么位置开始和结束复制)

2.参数:copyOfRange(int[] original, int from, int to)

  • 参数1:被复制数组
  • 参数2:被复制数组的开始位置
  • 参数3:被复制数组的结束位置

3.返回值:复制后的新数组

4.实例:

int[] array = {1, 2, 3, 4, 5, 6, 7, 9};
System.out.println("原数组"+Arrays.toString(array));//[1, 2, 3, 4, 5, 6, 7, 9]
int[] array4 = Arrays.copyOfRange(array, 3, 5);//[4, 5]
int[] array5 = Arrays.copyOfRange(array, 3, 15);//[4, 5, 6, 7, 9, 0, 0, 0, 0, 0, 0, 0]
System.out.println("复制3-5位的新数组"+Arrays.toString(array4));
System.out.println("复制3-15位的新数组"+Arrays.toString(array5));

5.源代码解析:

 调用Arrays工具类的copyOfRange​()方法;传入参数,判断新数组的长度是否为正数(结束位置-开始位置);为正则按照指定区域进行复制,否则抛异常。

五、Arrays.fill()

1.作用:将指定元素填充给数组某元素

2.参数:fill​(int[] a, [int fromIndex, int toIndex] int val)

  • 参数1:已有原数组
  • 参数2:开始结束位置(可无)
  • 参数3:指定的元素

3.返回值:无

4.实例:

String[] a = {"a", "b", "c", "d", "e", "f"};
System.out.println(Arrays.toString(a));  //[a, b, c, d, e, f]
Arrays.fill(a, "java");
System.out.println(Arrays.toString(a));  //[java, java, java, java, java, java]

String[] b = {"a", "b", "c", "d", "e", "f"};
System.out.println(Arrays.toString(b));  //[a, b, c, d, e, f]
Arrays.fill(b, 2, 5, "java");
System.out.println(Arrays.toString(b));  //[a, b, java, java, java, f]

5.源代码解析:

 调用Arrays工具类的fill​()方法;传入参数后,只要结束位置大于开始位置,就可以将指定元素覆盖原数组中指定位置。

六、Arrays.sort()

1.作用:给数组排序(默认升序,支持lambda,泛型)

2.参数:sort​(Object[] a[, int fromIndex, int toIndex])

  • 参数1:需要排序的数组
  • 参数2:开始排序结束排序位置

3.返回值:

4.实例:

int[] array = {1, 2, 3, 4, 5, 6, 7, 9};
System.out.println("原数组"+Arrays.toString(array));//[1, 2, 3, 4, 5, 6, 7, 9]

int[] array6 = {1,3,5,7,9,4,6,2};
System.out.println(Arrays.toString(array6));//[1,3,5,7,9,4,6,2]
Arrays.sort(array);//默认全排
//Arrays.sort(array6,2,8);//只排指定区域

System.out.println("全部排序后数组"+Arrays.toString(array6));//[1, 3, 2, 4, 5, 6, 7, 9]
//System.out.println("只排2-8区域后数组"+Arrays.toString(array6));//[1, 3, 5, 7, 9, 4, 6,2]

5.源代码解析:

 

 调用Arrays工具类的sort​()方法;传入参数后,(1)若是全排,传入一个需要排序的数组,方法中调用了DualPivotQuicksort类的sort()方法。(2)若要给指定区域进行排序,就要调用rangeCheck()方法。

七、Arrays.toString()

1.作用:将数组转换为字符串

2.参数:待转化数组 toString(Object[] a)

3.返回值:转化后的字符串

4.实例:

String[] s = {"a", "b", "c", "d", "e", "f"};
System.out.println(Arrays.toString(s)); //[a, b, c, d, e, f]

5.源代码解析:

调用Arrays工具类的sort​()方法;传入参数后, 判断传入的数组a是null,则返回字符串"null"。计算数组中最后一个元素的下标,并将其存储在变量iMax中。判断iMax等于-1,则返回字符串"[ ]"。否则,创建一个可变字符串StringBuilder对象保存b。在StringBuilder对象b追加左方括号[,表示数组的开始。for循环遍历数组,判断当前索引i是否等于最后一个元素的索引iMax。若是,则向StringBuilder对象b追加右方括号],并将StringBuilder转换为字符串返回。如果当前元素不是最后一个元素,则在追加当前元素后,还向StringBuilder对象b追加逗号和空格。

以上就是Arrays工具类的常见方法总结,希望对小伙伴们有助!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值