Arrays工具类的常见方法总结

一、Arrays.asList( )

1.作用:Arrays.asList( )方法的作用是将数组转换成List,将List中的全部集合对象添加至ArrayList集合中

2.参数:动态参数 (T... a)

3.返回值:List 集合 List<T>

4.举例:

java 复制代码
package com.ztt.Demo02;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class demo03 {
	public static void main(String[] args) {
		//创建临时的List集合
		List<String> girlList=Arrays.asList("张甜甜","张亚丽","任敏","史碧蓉");
		
		//全部添加至ArrayList集合中
		ArrayList<String> list=new ArrayList<String>();
		list.addAll(girlList);
		
		System.out.println(list);
		
	}

}

输出结果:

java 复制代码
[张甜甜, 张亚丽, 任敏, 史碧蓉]

5.源代码解读:

Arrays.asList( ) 是通过创建了一个 ArrayList 对象,然后将动态参数(T... a)传入,返回值是List 集合 List<T>

二、Arrays.binarySearch( )

1.作用:Arrays.binarySearch( )方法的作用是在一组有序数组查找目标元素

2.参数:(int[ ] a, int key)

参数1:目标数组

参数2:需要查找的元素

3.返回值:查找到的目标元素的下标(没有查找到返回**-1**)

4.举例:

java 复制代码
import java.util.Arrays;

public class demo03 {

	public static void main(String[] args) {
		
		int[] array= {28,12,89,73,65,18,96,50,8,36};
		int target=36; //目标元素
		
		//先排序
		Arrays.sort(array);
		System.out.println(Arrays.toString(array));
		
		//再查找
		int index=Arrays.binarySearch(array, target);
		System.out.println(index);
	
  }
}

import java.util.Arrays;

public class demo05 {

	public static void main(String[] args) {
		// 查找元素:使用Arrays工具类的binarySearch()方法
		
//		int[] numbers= {11,12,13,14,17,19,13,27};//有序数组
		int[] numbers= {3,6,2,5,9,7,6,2};//无序数组
		
		int target=7;
		
		//快速排序
		Arrays.sort(numbers);
		System.out.println(Arrays.toString(numbers));
		
		//基于二分查找,要求数组必须有序
		int index=Arrays.binarySearch(numbers, target);
		
		System.out.println(index);

	}

}

输出结果:

java 复制代码
[8, 12, 18, 28, 36, 50, 65, 73, 89, 96]
4

[2, 2, 3, 5, 6, 6, 7, 9]
6

5.源代码解读:

**binarySearch( )**方法通过传入参数目标数组和需要查找的元素,返回binarySearch0()方法的四个参数:a:要搜索的数组 0:要搜索的起始下标 a.length:要搜索的结束下标最后一个元素的下标为a.length-1 key:要搜索的值

binarySearch( ) 方法是调用了 binarySearch0( )方法,low为低位0high为高位数组a.length-1 ,然后通过计算得到中间位置mid ,获取中间值midVal,然后再用中间值midVal和目标值key相较。
若中间值midVal大于目标值key时,说明目标元素可能在目标数组的上半区,将high=mid-1 ,然后继续计算中间值,依次循环,直到low<=high时,循环结束。若找到目标元素,则返回其下标,若没找到,则返回一个负数 -(low + 1)
若中间值midVal小于目标值key时,说明目标元素可能在目标数组的下半区,将low=mid+1,然后继续计算中间值,依次循环,直到low<=high时,循环结束。若找到目标元素,则返回其下标,若没找到,则返回一个负数 -(low + 1)

三、Arrays.copyOf( )

1.作用:Arrays.copyOf( )方法的作用是复制数组

2.参数:

参数1:原数组

参数2:复制的元素个数

3.返回值:int类型的数组

4.举例:

java 复制代码
package com.ztt.Demo02;

import java.util.Arrays;

public class demo04 {
	public static void main(String[] args) {
		// 数组复制
				//方式2:通过Arrays工具类的copyOf()\copyOfRange()
				int[] numbers= {1,2,3,4,5,6,7};
				System.out.println("原数组内容:"+Arrays.toString(numbers));
				System.out.println(numbers);
				
				//复制前三个元素:从下标0开始复制,复制前三个元素
				int[] arr01=Arrays.copyOf(numbers, 3);
				System.out.println("前三个元素:"+Arrays.toString(arr01));
				System.out.println(arr01);
				
				//复制所有元素:从下标0开始复制,复制所有元素
				int[] arr02=Arrays.copyOf(numbers, numbers.length);
				System.out.println("所有的元素:"+Arrays.toString(arr02));
				System.out.println(arr02);
	}

}

输出结果:

java 复制代码
原数组内容:[1, 2, 3, 4, 5, 6, 7]
[I@515f550a
前三个元素:[1, 2, 3]
[I@626b2d4a
所有的元素:[1, 2, 3, 4, 5, 6, 7]
[I@5e91993f

5.源代码解读:

**Arrays.copyOf( )**方法通过传入参数原始数组和想要创建的新数组的长度,返回一个int类型的数组,创建一个新的数组int[ ] copy:长度为newLength,用于存放复制过来的元素,然后通过System.arraycopy( )方法,将原数组中的元素复制到copy数组中。

System.copyOf( )

1.作用:System.copyOf( )方法的作用是数组的复制,效率高

2.参数:

参数1:原数组

参数2:开始复制的位置

参数3:目标数组

参数4:开始存储的位置

参数5:复制的长度(复制的元素个数)

3.返回值:没有返回值 void

4.举例:

java 复制代码
import java.util.Arrays;

public class demo01 {

	public static void main(String[] args) {
		// 数组的常用操作:
		//1.填充
		//2.复制数组
		//方式1:System类的arraycopy()方法 效率高
		int[] numbers= {1,2,3,4,5,6,7};
		int[] target=new int[numbers.length];
		
		//参数1:原数组
		//参数2:开始复制的位置
		//参数3:目标数组
		//参数4:开始存储的位置
		//参数5:复制的长度(复制的元素个数)
		System.arraycopy(numbers, 0, target, 0, numbers.length);
		
		//输出数组内容
		System.out.println(Arrays.toString(numbers));
		System.out.println(Arrays.toString(target));
		
		//输出数组类型和内存地址
		System.out.println(numbers);
		System.out.println(target);

	}

}

输出结果:

java 复制代码
[1, 2, 3, 4, 5, 6, 7]
[1, 2, 3, 4, 5, 6, 7]
[I@1eb44e46
[I@6504e3b2

5.源代码解读:

**System.copyOf( )**通过传入参数 原数组 开始复制的位置 目标数组 开始存储的位置 复制的元素个数 没有返回值。

四、Arrays.copyOfRange( )

1.作用:Arrays.copyOfRange( )方法的作用是复制指定区间的元素

2.参数:

参数1:原数组

参数2:开始复制的位置

参数3:结束位置

3.返回值:int类型的数组

4.举例:

java 复制代码
package com.ztt.Demo02;

import java.util.Arrays;

public class demo05 {
	public static void main(String[] args) {
		//复制指定区间元素:从下表1开始复制,复制下标4之前的元素
		int[] numbers= {1,2,3,4,5,6,7};
		int[] arr03=Arrays.copyOfRange(numbers, 1,4);
		System.out.println("指定区间元素:"+Arrays.toString(arr03));
		System.out.println(arr03);
		
		//复制后五个元素:指定下标开始,复制到数组末尾
		int[] arr04=Arrays.copyOfRange(numbers, 2,numbers.length+5);
		System.out.println("后五个元素:"+Arrays.toString(arr04));
		System.out.println(arr04);
	}

}

输出结果:

java 复制代码
指定区间元素:[2, 3, 4]
[I@515f550a
后五个元素:[3, 4, 5, 6, 7, 0, 0, 0, 0, 0]
[I@626b2d4a

5.源代码解读:

Arrays.copyOfRange( ) 通过传入参数原数组 开始复制的位置 结束位置,返回一个int 类型的数组,计算新数组的长度 ,如果新数组的长度小于 0 时 ,则抛出非法参数异常(IllegalArgumentException),因为from参数大于to参数,这是一个不合法的范围;当新数组的长度大于 0 时,创建一个新的数组int[ ] copy:长度为newLength,用于存放复制过来的元素,然后通过System.arraycopy( )方法,将原数组中的元素复制到copy数组中。

五、Arrays.fill( )

1.作用:Arrays.fill( )的作用是数组的填充,将一个数组填充为目标数组

2.参数:

参数1:一个数组

参数2:填充的数字

3.返回值:没有返回值 void

4.举例:

java 复制代码
package com.ztt.Demo02;

import java.util.Arrays;

public class demo06 {
	public static void main(String[] args) {
	//数组填充
	int[] number1= {9,8,7};
	System.out.println("填充前:"+Arrays.toString(number1));
	Arrays.fill(number1, -1);
	System.out.println("填充后:"+Arrays.toString(number1));
	
	
	
	int[] number2=new int[3];
	System.out.println("填充前:"+Arrays.toString(number2));
	Arrays.fill(number2, -1);
	System.out.println("填充后:"+Arrays.toString(number2));
		
	}

}

输出结果:

java 复制代码
填充前:[9, 8, 7]
填充后:[-1, -1, -1]
填充前:[0, 0, 0]
填充后:[-1, -1, -1]

5.源代码解读:

**Arrays.fill( )**通过传入参数 (一个数组 填充的数字),没有返回值,使用for循环遍历数组a,将数组a中的每一个元素设置为val。

六、Arrays.sort( )

1.作用:Arrays.sort( ) 的作用是对数组进行排序(快速排序)

2.参数:需要排序的数组

3.返回值:没有返回值 void

4.举例:

java 复制代码
package com.ztt.Demo02;

import java.util.Arrays;

public class demo07 {
	public static void main(String[] args) {
		int[] number={6,8,9,7,1};
		System.out.println("排序前:"+Arrays.toString(number));
		Arrays.sort(number);
		System.out.println("排序后:"+Arrays.toString(number));
		
	}

}


import java.util.Arrays;

public class demo09 {

	public static void main(String[] args) {
		// 通过Arrays工具类的sort()方法
		
		char[] arr= {'l','k','j','h','g','f','d','s','a'};
		System.out.println(arr);
		
		Arrays.sort(arr);
		System.out.println(arr);

	}

}

输出结果:

java 复制代码
排序前:[6, 8, 9, 7, 1]
排序后:[1, 6, 7, 8, 9]

lkjhgfdsa
adfghjkls

5.源代码解读:

Arrays.sort( ) 通过传入一个需要排序的数组,返回值为void,方法中调用了DualPivotQuicksort类的sort()方法。

七、Arrays.toString( )

1.作用:Arrays.toString( )的作用是将数组转换为字符串的形式表示,查看数组的内容。

2.参数:一个数组

3.返回值:字符串

4.举例:

java 复制代码
import java.util.Arrays;

public class demo06 {

	public static void main(String[] args) {
		
		//无序数组
		int[] numbers= {1,2,9,4,5,7};
		
		System.out.println(Arrays.toString(numbers));
    }
}

输出结果:

java 复制代码
[1, 2, 9, 4, 5, 7]

5.源代码解读:

**Arrays.toString( )**通过传入一个整数数组a作为参数,并返回一个字符串。由于它是静态的,你不需要创建类的实例就可以调用这个方法。

判断传入的数组a是null,则方法直接返回字符串"null"。计算数组中最后一个元素的下标(a.length - 1),并将其存储在变量iMax中。然后,如果iMax等于-1(即数组为空),则方法返回字符串"[ ]"。

创建一个StringBuilder对象b,用于构建数组的字符串表示。StringBuilder是一个可变对象,用于高效地构建和修改字符串。向StringBuilder对象b追加左方括号[,表示数组的开始。for遍历数组,向StringBuilder对象b追加数组a的第i个元素。检查当前索引i是否等于最后一个元素的索引iMax。如果是,则向StringBuilder对象b追加右方括号],并将StringBuilder转换为字符串返回。如果当前元素不是最后一个元素,则在追加当前元素后,还向StringBuilder对象b追加逗号和空格。

相关推荐
No0d1es4 分钟前
GESP CCF C++六级编程等级考试认证真题 2024年12月
开发语言·c++·算法·青少年编程·gesp·ccf·六级
就爱学编程24 分钟前
重生之我在异世界学编程之C语言:数据在内存中的存储篇(上)
c语言·数据结构
长安051126 分钟前
面试经典题目:LeetCode134_加油站
c++·算法·面试
m0_6949380130 分钟前
Leetcode打卡:考场就坐
javascript·算法·leetcode
狄加山6751 小时前
数据结构(顺序表)
数据结构
Protinx1 小时前
2009年408真题解析-数据结构篇(未完)
数据结构·经验分享·考研·408·计算机考研
析木不会编程1 小时前
【数据结构】【线性表】栈在算术表达式中的应用
数据结构
R_.L1 小时前
数据结构:单链表
数据结构
GISer_Jing1 小时前
前端Javascript数据结构与算法常见题目(二 **简单level**)
javascript·数据结构·算法
SchrodingerSDOG1 小时前
(补)算法刷题Day24: BM61 矩阵最长递增路径
数据结构·python·算法·矩阵