集合与数组的相互转换

---------------------- ASP.Net+Android+IOS开发、 .Net培训、期待与您交流! ----------------------

18,集合与数组的相互转换

18.1集合转数组

集合转成数组,可以使用CollectiontoArray(T[]t)方法,此方法可以将集合转成与参数中传入的数组类型一致的数组。

如:

import java.util.ArrayList;

import java.util.Collections;

public class CollectionToArray {

   public static void main(String[] args) {

      ArrayList al=new ArrayList();

      al.add("abc1");

      al.add("abc2");

      al.add("abc3");

      al.add("abc4");

      String[]strarr=al.toArray(new String[al.size()]);

      for(String str:strarr){

         System.out.println(str);

      }

   }

}

/*

abc1

abc2

abc3

abc4*/


注意:集合转数组,使用Collection接口中的toArray(T[] t)方法。此方法传入一个什么类型的数组,就把集合转成什么类型数组。

当方法中接收的数组的长度如果小于集合的长度,则会创建一个与集合长度一样的数组;

当方法中接收的数组的长度如果大于集合的长度,则会按参数创建一个参数长度的数组,多的角标位置用null值填补。

所以,一般情况最好是创建一个与集合长度一样的数组,数组的长度可以使用,集合的size()来指定。

 

18.2数组转集合

数组转集合的方法,使用Arrays类中的静态方法asList(T…a),此方法可以将一个数组,转成List集合。

如:

import java.util.List;

import java.util.Arrays;

public class CollectionToArray {
   public static void main(String[] args) {

      String[]strarr=new String[]{"abc1","abc2","abc3","abc4"};

      List list=Arrays.asList(strarr);

      for(String str:list){

         System.out.println(str);

      }     

   }

}

/*

abc1

abc2

abc3

abc4

*/

 注意:数组转集合后,是不能使用集合中的增删方法的,因为数组的长度是固定的,转成集合后,集合的长度也是固定的,不能进行元素的增删。否则会抛出异常。

如:

import java.util.List;

import java.util.Arrays;
publicclass CollectionToArray {
   publicstaticvoid main(String[] args) {

      String[]strarr=new String[]{"abc1","abc2","abc3","abc4"};

      List list=Arrays.asList(strarr);

      list.add("abc5");//数组转集合后,对集合进行添加元素。

      for(String str:list){

         System.out.println(str);

      }     

   }

}

 

异常信息:

Exception in thread "main" java.lang.UnsupportedOperationException

   at java.util.AbstractList.add(AbstractList.java:148)

   at java.util.AbstractList.add(AbstractList.java:108)

   at 集合与数组互转.CollectionToArray.main(CollectionToArray.java:11)

 

数组转集合的其它注意事项:

1,当数组中的元素是基本数据类型时,数组转成集合后,会把整个数组作为集合中的一个元素进行存储。

如:

import java.util.List;

import java.util.Arrays;
public class CollectionToArray {
   public static void main(String[] args) {

      int[]arr={1,2,3,4,5};//数组中的元素是基本数据类型

       List list=Arrays.asList(arr);

      for(Object str:list){

         System.out.println(str);

      }     

   }

}

/* 

 * 打印结果:

   [I@1d86fd3

*/

 

2,当数组中的元素的引用数据类型时,数组转成集合后,会把数组中的元素作为集合的元素进行存储。

如:

import java.util.List;

import java.util.Arrays;

public class CollectionToArray {

   public static void main(String[] args) {

      Integer[] arr={1,2,3,4,5};//数组中的元素是引用数据类型。

      List list=Arrays.asList(arr);

      for(Object str:list){

         System.out.println(str);

      }     

   }

}

/* 

 * 打印结果:

1

2

3

4

5

*/

 


 

 

 

---------------------- ASP.Net+Android+IOS开发、 .Net培训、期待与您交流! ----------------------

你可能感兴趣的:(集合与数组的相互转换)