Java中集合框架工具类——Arrays(传智播客毕老师视频讲解)
2014-10-03 16:37
295 查看
一、Arrays中的方法
1、toString():将数组变为字符串
原来的方法:建立StringBilder容器,将数组中的元素添加至该容器中,形成字符串!
现在的方法:直接调用Arrays中的toString方法,将数组变为字符串:
如代码:
2、asList():将数组变为List集合
把数组变成list集合有什么好处?
可以使用集合的思想和方法来操作数组中的元素。
注意1:将数组变成集合,不可以使用集合的增删方法。因为数组的长度是固定。
如 :contains。
get
indexOf()
subList();
如果增删。那么会反生UnsupportedOperationException,
注意2:如果数组中的元素都是对象。那么变成集合时,数组中的元素就直接转成集合中的元素。
如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素存在。
如代码:
即在int[] 型数组中,转为List集合后,因为int为基本数据类型,所以将该数组作为集合元素传递进来,即只传了一个元素,即int[]元素。
但是Integer[]型数组中,其数组中的元素均为对象,所以变成集合时,数据中的元素直接转成集合中的元素,即Integer类型。
二、Collections中的toArray():将集合转为数组
1、指定类型的数组到底要定义多长呢?
当指定类型的数组长度小于了集合的size,那么该方法内部会创建一个新的数组。长度为集合的size。
当指定类型的数组长度大于了集合的size,就不会新创建了数组。而是使用传递进来的数组。
所以创建一个刚刚好的数组最优。
2、为什么要将集合变数组?
为了限定对元素的操作。不需要进行增删了。
1、toString():将数组变为字符串
原来的方法:建立StringBilder容器,将数组中的元素添加至该容器中,形成字符串!
现在的方法:直接调用Arrays中的toString方法,将数组变为字符串:
如代码:
int[] arr={2 ,3, 4}; System.out.println(arr); System.out.println(arr[0]); System.out.println(Arrays.toString(arr));结果为:
2、asList():将数组变为List集合
把数组变成list集合有什么好处?
可以使用集合的思想和方法来操作数组中的元素。
注意1:将数组变成集合,不可以使用集合的增删方法。因为数组的长度是固定。
如 :contains。
get
indexOf()
subList();
如果增删。那么会反生UnsupportedOperationException,
String[] arr3={"abc","def","ghi"}; List<String> L4=Arrays.asList(arr3); System.out.println(L4);结果为:
注意2:如果数组中的元素都是对象。那么变成集合时,数组中的元素就直接转成集合中的元素。
如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素存在。
如代码:
int[] arr={2 ,3, 4}; List L1=Arrays.asList(arr); System.out.println(L1); List<int []> L2=Arrays.asList(arr); System.out.println(L2); Integer[] arr2={2,3,4}; List<Integer> L3=Arrays.asList(arr2); System.out.println(L3);结果为:
即在int[] 型数组中,转为List集合后,因为int为基本数据类型,所以将该数组作为集合元素传递进来,即只传了一个元素,即int[]元素。
但是Integer[]型数组中,其数组中的元素均为对象,所以变成集合时,数据中的元素直接转成集合中的元素,即Integer类型。
二、Collections中的toArray():将集合转为数组
1、指定类型的数组到底要定义多长呢?
当指定类型的数组长度小于了集合的size,那么该方法内部会创建一个新的数组。长度为集合的size。
当指定类型的数组长度大于了集合的size,就不会新创建了数组。而是使用传递进来的数组。
所以创建一个刚刚好的数组最优。
2、为什么要将集合变数组?
为了限定对元素的操作。不需要进行增删了。
String[] arr3={"abc","def","ghi"}; List<String> L4=Arrays.asList(arr3); //数组转集合 System.out.println(L4); //集合转数组 String[] arr4=L4.toArray(new String[0]); //所开辟空间不足 System.out.println(Arrays.toString(arr4)); String[] arr5=L4.toArray(new String[5]); //会开辟额外的空间 System.out.println(Arrays.toString(arr5)); String[] arr6=L4.toArray(new String[L4.size()]);//最合适的做法 System.out.println(Arrays.toString(arr6));结果如下:
相关文章推荐
- Java中集合框架工具类——Collections(传智播客毕老师视频讲解)
- Java中泛型(5)——泛型限定(传智播客毕老师视频讲解)
- 黑马程序员——Java基础---泛型、集合框架工具类:collections和Arrays
- Java中时间获取(传智播客毕老师视频讲解)
- Java中基本数据类型对象包装类(传智播客毕老师视频讲解)
- Java多线程(4)——多线程JDK5.0升级版(传智播客毕老师视频讲解)
- Java中Map接口(传智播客毕老师视频讲解)
- Java中IO流(1)——IO流概述(传智播客毕老师视频讲解)
- Java多线程(1)——多线程创建(传智播客毕老师视频讲解)
- Java中IO流(2)——字符流(传智播客毕老师视频讲解)
- Java中StringBuffer与StringBuilder(传智播客毕老师视频讲解)
- Java中泛型(1)——泛型介绍(传智播客毕老师视频讲解)
- Java中Collection子接口(1)——List接口(传智播客毕老师视频讲解)
- Java中System类(传智播客毕老师视频讲解)
- Java多线程(2)——多线程安全(传智播客毕老师视频讲解)
- Java中泛型(2)——泛型类(传智播客毕老师视频讲解)
- Java中可变参数方法(传智播客毕老师视频讲解)
- Java中静态导入(传智播客毕老师视频讲解)
- Java多线程(3)——多线程通信(传智播客毕老师视频讲解)
- Java对象初始化过程(传智播客毕老师视频讲解)