Arrays方法
Posted 寇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arrays方法相关的知识,希望对你有一定的参考价值。
Arrays方法
Arrays里面包括了一系列静态方法,用于管理和操作数组
-
toString方法
Array.toString(arr);
-
sort排序(自然排序和定制排序)
int []arr=1,2,4,1,5,1;
Arrays.sort(arr);//默认是从大到小的
//可以通过Compare接口来定制排序
Arrays.sort(arr,new Compare()
@Override
public int compare(Integer o1,Integer o2)
int i1=(int)01;
int i2=(int)02;
return i1-i2;(通过比较两个数字的大小来决定是否要换位置)
)
- copyOf 数组元素的复制
//1.从arr中复制arr.length个数字给newArr;
Integer[]newArr=Arrays.copyOf(arr,arr.length);
//2.如果长度小于0,则会抛出异常
- fill数组填充
int []nums=1,23,111,44;
Arrays.fill(nums,33);
System.out.println(Arrays.toString(nums));
就是将nums数组的元素,都变成33
- equals比较两个数组的元素内容是否完全一致
int []nums2=1,23,111,44;
int []nums1=1,23,111,44;
boolean b=Arrays.equals(nums,nums2);
- asList 将一组数组,转换成list
List asList =Arrays.asList(1,23,111,44);
asList的运行类型为
Java-Arrays类-Arrays.asList()方法详解
此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。
Arrays.asList() 是将数组作为列表来查看的方法,值得注意的是:
public class Test {
public static void main(String[] args) {
int[] a = new int[]{1,2,3,4,5,6,7,8};
List list1 = Arrays.asList(a);
System.out.println(list1.size()); //1
Integer[] b = new Integer[] {1,2,3,4,5,6,8};
List list2 = Arrays.asList(b);
System.out.println(list2.size()); //7
}
}
期望的输出是 list里面也有7个元素,也就是size为7,然而结果是1。说明编译器对Integer[] 处理不一样。Integer是可变长参数。传入过程中asList()方法实际是将Integer数组里的元素进行存储。
原因:在Arrays.asList中,该方法接受一个变长参数,一般可看做数组参数,但是因为int[] 本身就是一个类型,所以a变量作为参数传递时,编译器认为只传了一个变量,这个变量的类型是int数组,所以size为1,相当于是List中数组的个数。基本类型是不能作为泛型的参数,按道理应该使用包装类型,但这里缺没有报错,因为数组是可以泛型化的,所以转换后在list中就有一个类型为int的数组 ,返回一个受指定数组支持的固定大小的列表。
方法源代码:
@SafeVarargs
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
最后提醒,如果Integer[]数组没有赋值的话,默认是null,而不是像int[]数组默认是0。
public class Test2 {
public static void main(String[] args) {
Week[] weeks = {Week.sun,Week.mon,Week.tue,Week.wed,Week.thu,Week.fri};
List list = Arrays.asList(weeks);
list.add(Week.sat);
System.out.println(list.size());
}
}
enum Week{
sun,mon,tue,wed,thu,fri,sat
}
注意这里用add会出错,因为是arrays.aslist中,看代码可以看到这里返回的ArrayList不是原来的传统意义上的java.util.arraylist了,而是自己工具类的一个静态私有内部类,并没有提供add方法,要自己实现,
所以这里是出错了,因此,除非确信array.aslist后长度不会增加,否则谨慎使用:List abc=Arrays.asList("a","b","c"),因为这样的长度是无法再add的了.
以上是关于Arrays方法的主要内容,如果未能解决你的问题,请参考以下文章