您的位置:首页 > 其它

使用Arrays.asList()需要注意的点

2016-11-28 11:43 561 查看
1,在Arrays中有一个静态的方法,可以将数组转为集合,但是在对基本数据类型的数组进行转换时出现了一些的问题,我们来看一下代码。

import java.util.Arrays;
import java.util.List;

public class ArraysAsList {

public static void main(String[] args) {
// char
char[] mChar = { 'a', 'b' };
System.out.println("----->char" + Arrays.asList(mChar));
// int
int[] mInt = { 1, 23, 4, 5, 56, 77 };
System.out.println("---->int" + Arrays.asList(mInt));
// boolean
boolean[] mBoolean = { true, false };
System.out.println("---->boolean" + Arrays.asList(mBoolean));
// double
double[] mDouble = { 1.1, 2.4, 5.6, 7.8 };
System.out.println("---->double" + Arrays.asList(mDouble));
// String
String mString[] = { "花花", "草草", "纷纷" };
List<String> list = Arrays.asList(mString);
System.out.println("---->String" + Arrays.asList(mString));

}
}
输出的结果:



通过结果可以看到:基本数据类型打印的都是地址值,而String类型的数组输出的是数组中的元素,这是为啥嘞?通过引用Arrays.asList(T...a)方法,可以知道括号中需要一个含数据类型的实参(T一般就是泛型的意思),而基本数据类型是没有类型的(有点绕,非要用的话可以借助他们的包装类);可是为什么不满足类型还能使用嘞?因为数组也是一个类型(下面的方法是没问题的);也就是说基本数据类型转集合遍历是需要借助其他方法滴,大家可以google或者度娘。

public int[] getSum(){
return new int[3];
}
2,String打印出元素是没有问题的,但是向这个集合中添加元素可以吗?



public static void main(String[] args) {
// char
char[] mChar = { 'a', 'b' };
System.out.println("----->char" + Arrays.asList(mChar));
// int
int[] mInt = { 1, 23, 4, 5, 56, 77 };
System.out.println("---->int" + Arrays.asList(mInt));
// boolean
boolean[] mBoolean = { true, false };
System.out.println("---->boolean" + Arrays.asList(mBoolean));
// double
double[] mDouble = { 1.1, 2.4, 5.6, 7.8 };
System.out.println("---->double" + Arrays.asList(mDouble));
// String
String mString[] = { "花花", "草草", "纷纷" };
List<String> list = Arrays.asList(mString);
System.out.println("---->String" + Arrays.asList(mString));
/*
* 此集合是根据mString[]获得的,长度已经固定,不能改变;
* 在使用Arrays.asList()后调用add,remove这些method时出现
* java.lang.UnsupportedOperationException异常。
* 这是由于Arrays.asList() 返回java.util.Arrays$ArrayList, 而不是ArrayList。
* Arrays$ArrayList和ArrayList都是继承AbstractList,remove,add等
* method在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。
* ArrayList override这些method来对list进行操作,但是Arrays$ArrayList没有override remove(),add()等,
* 所以throw UnsupportedOperationException。
*/
list.add("ss");// java.lang.UnsupportedOperationException
}
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Arrays.asList