黑马程序员--数组与集合互相转变
--------- android培训、java培训、期待与您交流! ---------
7 数组与集合的相互转变
7.1 数组转变成集合
1,为什么把数组转变成集合呢?有什么好处呢?
数组转变成集合后,就可以使用集合的思想和方法来操作数组中的元素。
注意:将数组变成集合,不可以使用集合的增删方法。
因为数组的长度是固定。
但是下面用这些集合的方法就很容易操作数组了
contains(),查询是否包含某元素
get(),取得数组中的元素,而不再用for循环去遍历取得
indexOf(),查询该元素的索引
subList();是否包含某一字串
如果你增删。那么会反生UnsupportedOperationException,
2,数组转变集合时,数组中元素在集合中是什么成分
- 如果数组中的元素都是对象。那么变成集合时,数组中的元素就直接转成集合中的元素。
- 如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素存在。
3,数组转变成集合的方法
Arrays:用于操作数组的工具类。
里面都是静态方法。
asList():把数组转变成集合
现举例如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 import java.util.*; 2 class ArraysDemo 3 { 4 public static void main(String[] args) 5 { 6 // int[] arr = {2,4,5}; 7 // System.out.println(Arrays.toString(arr)); 8 9 10 String[] arr = {"abc","cc","kkkk"}; 11 12 //把数组转变成集合 13 List<String> list = Arrays.asList(arr); 14 //sop("contains:"+list.contains("cc"));//判断是否包含某个元素,直接调用list中的contains()方法 15 //list.add("qq");//UnsupportedOperationException, 16 17 //sop(list); 18 //数组中元素是基本数据元素和数组中元素是对象转变成集合的区别 19 //int[] nums = {2,4,5}; 20 Integer[] nums = {2,4,5}; 21 22 23 List<Integer> li = Arrays.asList(nums); 24 25 sop(li); 26 27 } 28 //传统判断数组中是否包含某一元素的方法,要写一方法判断麻烦 29 public static boolean myContains(String[] arr,String key) 30 { 31 for(int x=0;x<arr.length; x++) 32 { 33 if(arr[x].equals(key)) 34 return true; 35 } 36 return false; 37 } 38 39 public static void sop(Object obj) 40 { 41 System.out.println(obj); 42 } 43 44 }
7.2 集合转变成数组
1,为什么要将集合变数组?
为了限定对元素的操作。不需要进行增删了。
2,定义数组的时候要指定数组的长度,那么怎样定义呢?
- 当指定类型的数组长度小于了集合的size,那么该方法内部会创建一个新的数组。长度为集合的size。
- 当指定类型的数组长度大于了集合的size,就不会新创建了数组。而是使用传递进来的数组。
- 所以创建一个刚刚好的数组最优,即数组长度等于集合的size。
3,集合变成数组的方法
用的是Collection接口中的toArray方法。
举例如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 import java.util.*; 2 class CollectionToArray 3 { 4 public static void main(String[] args) 5 { 6 ArrayList<String> al = new ArrayList<String>(); 7 8 al.add("abc1"); 9 al.add("abc2"); 10 al.add("abc3"); 11 //集合变成数组,数组的长度等于集合的长度 12 String[] arr = al.toArray(new String[al.size()]); 13 14 System.out.println(Arrays.toString(arr)); 15 16 } 17 }
--------- android培训、java培训、期待与您交流! ----------
详细请查看:http://edu.csdn.net/heima/