ArrayList和数组间的相互转换

http://wanglihu.iteye.com/blog/243238

开发中不免碰到List与数组类型之间的相互转换,举一个简单的例子:

Java代码  
  1. package test.test1;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. public class Test {
  5. /**
  6. * @param args
  7. */
  8. public static void main(String[] args) {
  9. List list=new ArrayList();
  10. list.add("王利虎");
  11. list.add("张三");
  12. list.add("李四");
  13. int size=list.size();
  14. String[] array=new String[size];
  15. for(int i=0;i<list.size();i++){
  16. array[i]=(String)list.get(i);
  17. }
  18. for(int i=0;i<array.length;i++){
  19. System.out.println(array[i]);
  20. }
  21. }
  22. }

正如上面所列举的,当要将ArrayList类型的数据转换为String[]的时候,必须对List类型进行遍历,其实没有这种必要,List提供给我们一个很好的方法解决List转换成为数组的问题,不防再看一个例子: 
package test.test1;

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

Java代码  
  1. public class Test {
  2. public static void main(String[] args) {
  3. List<String> list=new ArrayList<String>();
  4. list.add("王利虎");
  5. list.add("张三");
  6. list.add("李四");
  7. int size=list.size();
  8. String[] array = (String[])list.toArray(new String[size]);
  9. for(int i=0;i<array.length;i++){
  10. System.out.println(array[i]);
  11. }
  12. }
  13. }

你是否发现这才是你想要的呢?其实很简单,ArrayList提供public <T> T[] toArray(T[] a)方法返回一个按照正确的顺序包含此列表中所有元素的数组;返回数组的运行时类型就是指定数组的运行时类型。如果列表能放入指定的数组,则返回放入此列表元素的数组。否则,将根据指定数组的运行时类型和此列表的大小分配一个新的数组。 
如果指定的数组能容纳列表并有剩余空间(即数组的元素比列表的多),那么会将数组中紧跟在集合末尾的元素设置为 null。这对确定列表的长度很有用,但只 在调用方知道列表中不包含任何 null 元素时才有用。 
    那么又怎么将数组转换成为List呢?不防再看一个小小的例子,如下所示:

Java代码  
  1. package test.test1;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. public class Test {
  5. public static void main(String[] args) {
  6. String[] array=new String[3];
  7. array[0]="王利虎";
  8. array[1]="张三";
  9. array[2]="李四";
  10. List<String> list=new ArrayList<String>();
  11. for(int i=0;i<array.length;i++){
  12. list.add(array[i]);
  13. }
  14. for(int i=0;i<list.size();i++){
  15. System.out.println(list.get(i));
  16. }
  17. }
  18. }

你是不发现很费事啊?其实数组转换成为List的问题Arrays对象也提供给我们public static <T> List<T> asList(T... a)供我们调用, 试运行下面的例子:

Java代码  
  1. package test.test1;
  2. import java.util.Arrays;
  3. import java.util.List;
  4. public class Test {
  5. public static void main(String[] args) {
  6. String[] array=new String[3];
  7. array[0]="王利虎";
  8. array[1]="张三";
  9. array[2]="李四";
  10. List<String> list=Arrays.asList(array);
  11. for(int i=0;i<list.size();i++){
  12. System.out.println(list.get(i));
  13. }
  14. }
  15. }

简单吧,asList方法返回一个受指定数组支持的固定大小的列表,此方法同 Collection.toArray 一起,充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。返回的列表是可序列化的,并且实现了 RandomAccess。除此之外, 此方法还提供了一个创建固定长度的列表的便捷方法,该列表被初始化为包含多个元素:

Java代码  
  1. package test.test1;
  2. import java.util.Arrays;
  3. import java.util.List;
  4. public class Test1 {
  5. public static void main(String[] args) {
  6. List<String> list = Arrays.asList("王利虎","张三","李四");
  7. for(int i=0;i<list.size();i++){
  8. System.out.println(list.get(i));
  9. }
  10. }
  11. }

下次遇到这样的问题,你一定会想到它,不会再for你的List对象或数组对象了吧!

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

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

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

  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. Java中arraylist和数组的相互转换

    Java中ArrayList和数组之间的相互转换 ArrayList转为数组 数组转为ArrayList 一.ArrayList转换数组 public static void arrayListToA ...

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

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

  6. Numpy中数组间运算

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

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

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

  8. ArrayList与数组

    ArrayList作用: 众所周知,一旦确定了数组的大小,改变它就不容易了.不过ArrayList类就可以解决动态更改数组大小的问题.ArrayList使用起来有点像数组,但是在添加和删除元素时,具有 ...

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

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

最新文章

  1. [SOJ] 简单哈希
  2. SpringBoot是如何解析HTTP参数的?
  3. 计算机缓存Cache机制理解
  4. PS制作立体效果——圆柱
  5. java类加public和不加public
  6. Lucene解析 - 基本概念
  7. java identifier expected,java – hibernate h2 embeddable list expected“identifier”
  8. 产品经理和程序员的黑话
  9. react-事件相关
  10. AngularJS1.5+ 笔记
  11. SpringBoot项目中遇到的BUG
  12. PTA-Hello World(C语言)
  13. [ZJOI2008]生日聚会
  14. Nginx 学习笔记(《深入理解Nginx:模块开发与架构解析》读书笔记)
  15. 常见设计规范与 Sketch 源文件下载集合
  16. 虚拟机14.00和CentOS7安装全部过程(百度网盘安装包)
  17. DLL load failed while importing _imaging怎么处理
  18. sumifs两个求和列如何计算_「sumifs」多条件求和函数Sumifs的用法 - seo实验室
  19. 更改Linux终端用户名显示颜色的PS1的用法
  20. 赴微软 软件开发测试工程师。

热门文章

  1. 您的手机上未安装应用程序 android 点击快捷方式提示未安装程序的解决
  2. Java排序算法(1)
  3. 自定义view-波纹扩散(圆扩散)
  4. 如何在BIOS里设置定时关机?
  5. 教你如何玩转redis-简单消息队列
  6. php制作会员签到打开,【PHP】织梦dedecms会员中心模板带会员签到赚金币功能
  7. Android性能优化之运算篇(二)
  8. 【Java并发编程】并发容器之CopyOnWriteArrayList
  9. swift_041(Swift的@noescape和@escaping)
  10. 中学计算机基础Word授课ppt,中学信息技术- 计算机硬件与软件基础知识课件.ppt...