一、ArrayList转换为数组
ArrayList提供public T[] toArray(T[] a)方法返回一个按照正确的顺序包含此列表中所有元素的数组,返回数组的运行时类型就是指定数组的运行时类型。

import java.util.ArrayList;
import java.util.List;
public class Test {  public static void main(String[] args) {  List<String> list=new ArrayList<String>();  list.add("a");  list.add("b");  list.add("c");  int size=list.size();  String[] array = (String[])list.toArray(new String[size]);  for(int i=0;i<array.length;i++){  System.out.println(array[i]);  }  }
}

二、数组转换为List
2.1 其实数组转换成为List的问题,Arrays对象也提供给我们public static List asList(T… a)供我们调用。

import java.util.Arrays;
import java.util.List;
public class Test {  public static void main(String[] args) {  String[] array=new String[3];  array[0]="a";  array[1]="b";  array[2]="c";  List<String> list=Arrays.asList(array);  for(int i=0;i<list.size();i++){  System.out.println(list.get(i));  }  }
}

这不是最好的,因为asList()返回的列表的大小是固定的。事实上,返回的列表不是java.util.ArrayList,而是定义在java.util.Arrays中一个私有静态类。我们知道ArrayList的实现本质上是一个数组,而asList()返回的列表是由原始数组支持的固定大小的列表。这种情况下,如果添加或删除列表中的元素,程序会抛出异常UnsupportedOperationException。
2.2 最好的方式是这样的:

ArrayList<Element> arrayList = new ArrayList<Element>(Arrays.asList(array));
import java.util.ArrayList;
import java.util.Arrays;
public class Test {  public static void main(String[] args) {  String[] array=new String[3];  array[0]="a";  array[1]="b";  array[2]="c";  ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(array));for(int i=0;i<arrayList.size();i++){  System.out.println(arrayList.get(i));  }}
}

首先,我们来看下ArrayList的构造方法的文档。
ArrayList(Collection < ? extends E > c) : 构造一个包含特定容器的元素的列表,并且根据容器迭代器的顺序返回。
所以构造方法所做的事情如下:
1.将容器c转换为一个数组
2.将数组拷贝到ArrayList中称为”elementData”的数组中
ArrayList的构造方法的源码如下:

public ArrayList(Collection<? extends E> c) {elementData = c.toArray();size = elementData.length;if (elementData.getClass() != Object[].class)elementData = Arrays.copyOf(elementData, size, Object[].class);
}

转自ArrayList和数组间的相互转换

JavaArrayList和数组间的相互转换相关推荐

  1. ArrayList和数组间的相互转换

    ArrayList和数组间的相互转换 http://wanglihu.iteye.com/blog/243238 开发中不免碰到List与数组类型之间的相互转换,举一个简单的例子: Java代码   ...

  2. list,set,map,数组间的相互转换

    1.list转set Java代码   Set set =  new  HashSet( new  ArrayList()); 2.set转list Java代码   List list =  new ...

  3. list和数组间的相互转换(Java)

    前言 如果觉得文字太啰嗦直接看文章中的代码块也是完全没问题的. list转数组 java中list集合转为数组的方法: 1.使用无参数toArray方法,语法格式"Object[] toAr ...

  4. Numpy中数组间运算

    Numpy中数组间运算 1 数组与数的运算     [可以直接进行运算] arr = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]]) arr + ...

  5. PHP 对象、数组间的转换

    /** * PHP 对象.数组间的转换 * * @author flyer0126 * @since 2012/05/03 **/ // 1. 利用(array)和(object),简单处理 $obj ...

  6. php+对象+toarray_PHP 对象、数组间的转换

    PHP 对象.数组间的转换 /** * PHP 对象.数组间的转换 * * @author flyer0126 * @since 2012/05/03 **/ // 1. 利用(array)和(obj ...

  7. java集合——集合与数组间的转换+算法

    [0]README 0.1) 本文描述转自 core java volume 1, 源代码为原创,旨在理解 java集合--集合与数组间的转换+算法 的相关知识: 0.2) for full sour ...

  8. 信号处理:单边、双边频谱间的相互转换(转)

    参考:http://www.360doc.com/content/17/0330/15/908538_641424541.shtml 由于理论和实际之间的差异,单边.双边频谱间的相互转换是信号处理中的 ...

  9. Matlab中矩阵编号方式以及一维二维三维数据间的相互转换

    Matlab中矩阵编号方式以及一维二维三维数据间的相互转换 文章目录 Matlab中矩阵编号方式以及一维二维三维数据间的相互转换 一.问题的提出 二.一维数据转为二维和三维 三.三维数据转为一维和二维 ...

最新文章

  1. Java 过滤特殊字符的 正则表达式
  2. python画图-Python 绘图,我只用 Matplotlib(二)
  3. 《货币是个什么东西》笔记
  4. 4.事务提交过程,事务基本概念,Oracle中的事务生命周期,保存点savepoint,数据库的隔离级别
  5. 洛谷——P1910 L国的战斗之间谍
  6. 一步一步学linq to sql(二)
  7. Mac下cocos2dx-3.2+Xcode环境配置和项目创建
  8. 几行Python代码模拟轮盘抽奖游戏
  9. 基于PCA进行多光谱和全色图像融合
  10. Linux内核的裁剪移植,Linux内核裁剪移植学习分享
  11. 软件系统分析与设计考试重点、复习指导及复习笔记汇总
  12. 车辆管理系统python_python实现汽车管理系统
  13. SOME/IP 协议介绍
  14. yaml css教程,YAML 语法
  15. 如何演示扇形面积公式推导过程
  16. vue如何制作自定义表单校验样式
  17. 智能对话系统原理和实践
  18. CSDN学生大本营“每日进步”文章
  19. dr.fone for android,Wondershare Dr.Fone for Android
  20. 英国电信将保留EE品牌

热门文章

  1. 「Gradle学习笔记」一、构建工具
  2. 算法研究和学习-果蝇算法FOA
  3. GGAI重磅发布《自动泊车行业发展蓝皮书》: 竞争格局生变,谁在领跑市场?
  4. 重新定义一个全新的区块链运行架构:他们的技术有何不同?
  5. martin fowler_Martin Kleppmann的大型访谈:“弄清楚分布式数据系统的未来”
  6. 微信彩色字体图标的使用
  7. 华硕启动修复无法自动修复此计算机怎么办,华硕笔记本电脑开机出现自动修复,无法修复怎么办?...
  8. linux 传输文件stpf,在Linux下搭建 miniGUI mStudio环境...-linux 全面剖析ps命令-纯Servlet实现文件上传_169IT.COM...
  9. rosbag命令 | EVO工具 的使用
  10. uniapp开发微信小程序使用painter绘制海报