使用Arrays.asList()需要注意的点
2016-11-28 11:43
561 查看
1,在Arrays中有一个静态的方法,可以将数组转为集合,但是在对基本数据类型的数组进行转换时出现了一些的问题,我们来看一下代码。
通过结果可以看到:基本数据类型打印的都是地址值,而String类型的数组输出的是数组中的元素,这是为啥嘞?通过引用Arrays.asList(T...a)方法,可以知道括号中需要一个含数据类型的实参(T一般就是泛型的意思),而基本数据类型是没有类型的(有点绕,非要用的话可以借助他们的包装类);可是为什么不满足类型还能使用嘞?因为数组也是一个类型(下面的方法是没问题的);也就是说基本数据类型转集合遍历是需要借助其他方法滴,大家可以google或者度娘。
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 } }
相关文章推荐
- java使用Arrays asList需要注意了
- 使用Arrays.asList()需要注意的点
- java.util.Arrays.asList使用需要注意的地方
- Arrays类--Arrays.asList方法的使用及注意
- Arrays.asList使用注意
- Arrays.asList使用注意
- 使用Arrays.asList注意事项
- Arrays.asList使用注意事项
- Arrays.asList() 需要注意
- Arrays.asList 使用注意事项
- Arrays.asList方法创建List需要注意的地方
- Arrays.asList 使用注意
- Arrays类——Arrays.asList()方法使用
- 使用Arrays.asList时出现异常 java.lang.UnsupportedOperationException
- Arrays.asList()方法的使用
- 浅谈Arrays.asList()方法的使用
- 使用List的remove方法需要的注意的问题
- 使用Collections.addAll还是Arrays.asList生成List,当修改原始数据时,均会影响到List里的数据
- java.util.Arrays.asList使用体会
- Arrays类——Arrays.asList()方法使用