Arrays

来源:互联网 发布:苹果6splus怎么开数据 编辑:程序博客网 时间:2024/06/05 11:02

此类包含用来操作数组(比如排序和搜索)的各种方法,还包含一个允许将数组作为列表来查看的静态工厂。

asList方法

这里写图片描述

注意事项

  • asList()返回的是arrays中私有的终极ArrayList类型,有set、get、contains方法,但没有add、remove方法,所以返回的列表大小固定,不能进行增、删操作。
  • java语言规范规定:调用一个声明为foo(T… t)的方法,等同于调用foo(T[] t)。例如foo(bar,baz)等同于foo(new T[]{bar,baz})
  • asList()参数为T… a,必须是Object类型。因此对基本数据类型的数组应用此方法不会得到预期效果。结合toString()方法理解,在toString()方法中,提供了参数是基本数据类型的函数,因此对于基本数据类型不会出错。
 /**参数类型为Object测试**/String[] strAry = new String[] { "a", "b" };List<String> strList1 = Arrays.asList(strAry);List<String> strList2 = Arrays.asList("a", "b");// 等同于strList1for (String str : strList1) {     System.out.println(str);}System.out.println("========================");for (String str : strList2) {     System.out.println(str);}//输出结果ab========================ab
/**基本数据类型测试**/int[] intAry = new int[] { 1, 2 };List<int[]> intList = Arrays.asList(intAry);// 从下图中可看出,T为int[]。// 这是因为int不是Object类型,但是int[]是Object类型,因此会将整个数组作为一个元素存进去System.out.println("========================");for (Object obj : intList) {// 打印的只有一个元素,是数组地址     System.out.println(obj);}

这里写图片描述

基本数据类型数组转list

基本数据类型数组要想使用asList方法转list,可以先用apache commons-lang工具包里的数组工具类ArrayUtils的toObject()方法,将基本数据类型转为其包装类,然后再调用asList方法。

Arrays.asList(ArrayUtils.toObject(intAry));//上边的代码:int[] intAry = new int[] { 1, 2 };达到了预期效果  

解决asList返回列表无法增、删操作

List<String> copyList1 = new ArrayList<String>(Arrays.asList(strAry));List<String> copyList2 = new ArrayList<String>();Collections.addAll(copyList2, strAry);copyList1.add("c");copyList2.add("c");for (String str : copyList1) {     System.out.println(str);}for (String str : copyList2) {    System.out.println(str);}// 以上两种方法均能正确插入、删除

toString方法

这里写图片描述

boolean[] a = new boolean[] { true, false };//boolean[]int[] b1 = new int[] { 1, 2 };//int[]Integer[] b2 = new Integer[] { 1, 2 };//Object[]int[] c = null;System.out.println(Arrays.toString(a));System.out.println(Arrays.toString(b1));System.out.println(Arrays.toString(b2));System.out.println(Arrays.toString(c));//输出结果[true, false][1, 2][1, 2]null//字符串表示形式由数组的元素列表组成,括在方括号( "[]")中。相邻元素用字符 ", "(逗号加空格)分隔。这些元素通过 String.valueOf(***) 转换为字符串。如果 a 为 null,则返回 "null"

【注】因为提供了参数为基本数据类型的数组,所以参数为基本数据类型的数组时,结果也正确,而不是返回一个地址串,结合asList函数理解。

0 0
原创粉丝点击