• 数组和集合的转换


    (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; } }
    奋斗
  • 相关阅读:
    客户端用mstsc不能用一台设备连接终端服务器的解决办法
    [转]知识管理ABC
    Visual Studio常用小技巧[备忘]
    一套外企的数据库设计面试题
    MSDN中的图形元素和文档约定[备忘]
    设计模式概述
    ASP.Net 4.0中新增加的23项功能[转]
    Dreamweaver 8 的相关使用
    浅谈ThreadPool 线程池
    C#委托的异步调用[学习]
  • 原文地址:https://www.cnblogs.com/ClearX/p/5479125.html
Copyright © 2020-2023  润新知