数组和集合的转换

(1)集合转换为数组

这个方法有两种形式:toArray() 和 toArray(T[] a)

前一种是返回值是一个Object的数组,Object[],这个数组是不可以进行强制数据转换的。有很多人会在这里吃苦头,因为他们会这样写:

Integer[] t=(Integer[])test.toArray();

比如:

List<Integer> test=new ArrayList<Integer>();

for(int i=0;i<5;i++){

  test.add(i);

}

Integer[] t=(Integer[])test.toArray();

 

这样进行强制数据转换的后果就是报错:

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer;

所以,像上面这种状况下,应该要使用的是第二种形式来转换数据。

toArray(T[] a)这个方法返回一个类T的数组。这个数组包含了List内全部的元素。

这个方法的特点就是,如果数组a的长度能够装下整个List的数据的时候,所有数据会放入到数组a当中。

如果数组a的长度不够长,那么就会返回一个数组。

也就是说使用的形式有两种:

List<Integer> test=new ArrayList<Integer>();

for(int i=0;i<5;i++){

    test.add(i);

}

Integer[] t=new Integer[test.size()];

test.toArray(t);//第一种

Integer[] t3=new Integer[1];

Integer[] t2=test.toArray(t3);//第二种

如上,t和t2都是返回的数组。

最后也不免要提醒一下,转换之前不要忘记确认List内的元素是不是都可以被转换成你希望的类型,如果本身数据类型就不符合那么也就白忙活了。一定要注意集合里面的对象,比如我之前就犯过错误,集合中明明存的是Map,new了一个Person[],会抛出异常信息,貌似copy...

以上内容来源:http://www.javaeerun.com/jr_1398514189829.html

(2)数组转为集合

Arrays.asList() 方法进行转换

测试代码:
package myProject;

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

public class Test4 {

 public static void main(String[] args) {
  Test4 t = new Test4();
  List list1 = t.array2FixSizeList();
  List list2 = t.array2NormalList();
  String[] arr = t.list2Array();
//     list1.add("4");
//     list2.add("4");
  
//     for (Object object : list2) {
//     System.out.println(object);
//     }
  for (String string : arr) {
   System.out.println(string);
  }
 }
 
 /**
  * Arrays.asList返回固定大小的集合
  * @return
  */
 public List array2FixSizeList() {
  String[] strArr = {"1","2","3"};
  List list = (List) Arrays.asList(strArr);
  return list;
 }
 
 /**
  * Arrays.asList返回固定大小的集合,
   通过ArrayList的构造方法让其长度可以变化 *
@return */ public List array2NormalList() { String[] strArr = {"1","2","3"}; List list = new ArrayList((List) Arrays.asList(strArr)); return list; } /** * 集合转换为数据 * * @return */ public String[] list2Array(){ List list = new ArrayList(); list.add("1"); list.add("2"); String[] tmpArr = new String[list.size()]; String[] arr = (String[]) list.toArray(tmpArr); return arr; } }

 

posted @ 2016-05-10 19:20  ClearX  阅读(679)  评论(0编辑  收藏  举报