zoukankan      html  css  js  c++  java
  • 数组和集合的转换

    (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; } }
    奋斗
  • 相关阅读:
    电子商务网站的设计与实现(四):项目名称malling和一期开发计划
    电子商务网站的设计与实现(三):四大子系统,登录-账务-前端-后端
    电子商务网站的设计与实现(三):四大子系统,登录-账务-前端-后端
    删除垃圾软件,系统和网络出现故障
    删除垃圾软件,系统和网络出现故障
    2014年工作中遇到的20个问题:201-220
    2014年工作中遇到的20个问题:201-220
    电子商务网站的设计与实现(二):一期功能清单
    电子商务网站的设计与实现(二):一期功能清单
    CDS view注解解析
  • 原文地址:https://www.cnblogs.com/ClearX/p/5479125.html
Copyright © 2011-2022 走看看