一、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为低位0 ,high为高位数组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追加逗号和空格。