目录
1.Arrays.toString()方法
2.Arrays.sort()方法
3.Arrays.equals()方法
4.Arrays.binarySearch()方法
5.Arrays.copyOf()方法
6.Arrays.copyOfRange()方法
7. Arrays.aslist()方法
8. Arrays.fill()方法
在Java中Arrays包中的很多方法的功能十分的强大,在设计算法时十分的重要,可以很好的简化代码,所以在这里补充一下有关Arrays的常用方法。
Arrays的常用方法是在Arrays类当中的,所以导包是:java.util.Arrays
1.Arrays.toString()方法
作用:toString方法用于将数组转换为字符串,可以快速的输出数组的内容。
int[] arr = {1, 2, 3};
System.out.println(Arrays.toString(arr));
运行的结果是:
2.Arrays.sort()方法
作用:给数组排序,默认是升序的。
int[] arr = {5, 2, 3, 1, 4};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
运行结果是:
Arrays.sort(数组名,起始下标,排序个数)
Scanner s = Scanner(System.in);
int n = s.nextInt();
int[] a = new int[n]
for(int i = 0; i < n; i++)
a[i] = s.nextInt();
Arrays.sort(a,0,n - 1);
作用:输入n个数,按升序排列
注:对字符串进行排序是对每一个字符比较,而不是简单的比较长度。像
str1 = abcdf
str2 = abcdef
因为f大于e所以str1>str2
3.Arrays.equals()方法
作用:比较数组内容是否相等,如果相等返回true,否则返回false
int[] arr1 = {1, 2, 3};
int[] arr2 = {1, 2, 3};
boolean isEqual = Arrays.equals(arr1, arr2);
System.out.println(isEqual);
运行的结果是:
或者两个对象的地址是否相等,如果相等返回true,否则返回false
String str1 = "hello";
String str2 = "hello";
String str3 = new String("hello");
System.out.println(str1.equals(str2));
System.out.println(str1.equals(str3));
运行结果是:
分析:在上面的示例中str1和str2都是字符串常量,它们的地址相同,所以结果返回第4行返回的结果是true(说明:在Java中,字符串常量是被放在常量池当中的,常量池中的字符串常量是可以共享的,所以说多个字符串常量的值相等的话,那么它们在常量池当中的地址也是相等的,所以str1和str2的地址相等。注意使用new关键字创建字符串对象,每次都是在堆中创建一个新的对象,所以它们的地址不相同),上面的示例中str3和str1的地址显然是不同的,但是String类已经重写了equals的方法,所以重写后比较的就是字符串的内容是否相等,所以第5行返回的结果是true。
注:这个方法的适用场景是java提供的各种数据内容,例如(数组,字符串,各种集合...)判断它们是否相等,如果比较自己写的类时,就要重写这个方法了。
4.Arrays.binarySearch()方法
作用:在数组中查找元素,如果找到返回找到的元素在数组中的下标,如果没找到就返回-1。一般只要返回的值>=0就代表找到了。
int[] arr = {1, 2, 3, 4, 5};
int index = Arrays.binarySearch(arr, 3);
System.out.println(index);
运行的结果是:
5.Arrays.copyOf()方法
作用:复制指定数组,当中的第一个参数是复制的原数组,第二个参数是复制的长度
int[] arr1 = {1, 2, 3};
int[] arr2 = Arrays.copyOf(arr1, 5);
System.out.println(Arrays.toString(arr2));
运行的结果是:
这个的返回值是一个新的数组,所以会改变接受这个新数组的引用的一些属性:
int[] arr1 = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] arr2 = new int[5];
arr2 = Arrays.copyOf(arr1, 10);
System.out.println("复制后,arr2的长度是:"+arr2.length);
System.out.println("Arr2的内容是:"+Arrays.toString(arr2));
运行的结果是:
分析:就是原本的arr2数组的长度是5,但是在进行复制后它的长度变为10了
6.Arrays.copyOfRange()方法
作用:是上个方法的改进版,上面这个方法只能从下标为0的地方开始完成对数组的复制,但是这个方法里可以指定起始位置和结束位置。
int[] arr1 = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] arr2 = new int[5];
arr2 = Arrays.copyOfRange(arr1,3,5);
System.out.println("Arr2的内容是:"+Arrays.toString(arr2));
运行的结果是:
7. Arrays.aslist()方法
作用:将数组转化为List集合
Integer[] arr = {1, 2, 3, 4, 5};
List<Integer> list = Arrays.asList(arr);
System.out.println(list);
运行的结果是:
Arrays.aslist()返回的集合是一个视图,该集合和原数组共享一份数据,所以修改集合中的元素会改变原数组中的元素,演示代码如下:
public class experiment {
public static void main(String[] args) {
Integer[] arr = {1, 2, 3, 4, 5};
List<Integer> list = Arrays.asList(arr);
list.set(0,2);
System.out.println(list);
}
}
运行的结果是:
8. Arrays.fill()方法
作用:用指定的值填充数组
public class experiment {
public static void main(String[] args) {
int[] arr = new int[5];
Arrays.fill(arr, 10);
System.out.println(Arrays.toString(arr));
}
}
运行的结果是: