Arrays

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

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");// 等同于strList1
for (String str : strList1) {
     System.out.println(str);
}
System.out.println("========================");
for (String str : strList2) {
     System.out.println(str);
}
//输出结果
a
b
========================
a
b
/**基本数据类型测试**/
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函数理解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值