`
wanglihu
  • 浏览: 919465 次
  • 性别: Icon_minigender_1
  • 来自: 黑龙江
社区版块
存档分类

ArrayList和数组间的相互转换

    博客分类:
  • java
阅读更多
   开发中不免碰到List与数组类型之间的相互转换,举一个简单的例子:
package test.test1;
import java.util.ArrayList;
import java.util.List;
public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		List list=new ArrayList();
		list.add("王利虎");
		list.add("张三");
		list.add("李四");
		int size=list.size();
		String[] array=new String[size];
		for(int i=0;i<list.size();i++){
			array[i]=(String)list.get(i);
		}
		for(int i=0;i<array.length;i++){
			System.out.println(array[i]);
		}
	}
}


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

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("王利虎");
		list.add("张三");
		list.add("李四");
		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]);
		}
	}
}

你是否发现这才是你想要的呢?其实很简单,ArrayList提供public <T> T[] toArray(T[] a)方法返回一个按照正确的顺序包含此列表中所有元素的数组;返回数组的运行时类型就是指定数组的运行时类型。如果列表能放入指定的数组,则返回放入此列表元素的数组。否则,将根据指定数组的运行时类型和此列表的大小分配一个新的数组。
如果指定的数组能容纳列表并有剩余空间(即数组的元素比列表的多),那么会将数组中紧跟在集合末尾的元素设置为 null。这对确定列表的长度很有用,但只 在调用方知道列表中不包含任何 null 元素时才有用。
    那么又怎么将数组转换成为List呢?不防再看一个小小的例子,如下所示:
package test.test1;
import java.util.ArrayList;
import java.util.List;
public class Test {
	public static void main(String[] args) {
		String[] array=new String[3];
		array[0]="王利虎";
		array[1]="张三";
		array[2]="李四";
		List<String> list=new ArrayList<String>();
		for(int i=0;i<array.length;i++){
			list.add(array[i]);
		}
		for(int i=0;i<list.size();i++){
			System.out.println(list.get(i));
		}
	}
}

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

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

public class Test {
	public static void main(String[] args) {
		String[] array=new String[3];
		array[0]="王利虎";
		array[1]="张三";
		array[2]="李四";
		List<String> list=Arrays.asList(array);
		for(int i=0;i<list.size();i++){
			System.out.println(list.get(i));
		}
		

	}
}

    简单吧,asList方法返回一个受指定数组支持的固定大小的列表,此方法同 Collection.toArray 一起,充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。返回的列表是可序列化的,并且实现了 RandomAccess。除此之外, 此方法还提供了一个创建固定长度的列表的便捷方法,该列表被初始化为包含多个元素:
  package test.test1;
import java.util.Arrays;
import java.util.List;
public class Test1 {
	public static void main(String[] args) {
		List<String> list = Arrays.asList("王利虎","张三","李四");
		for(int i=0;i<list.size();i++){
			System.out.println(list.get(i));
		}
	}
}

下次遇到这样的问题,你一定会想到它,不会再for你的List对象或数组对象了吧!
分享到:
评论
5 楼 Freedom2199 2014-06-24  
thank you!
4 楼 wangsong76 2014-04-19  
Arrays.asList("王利虎","张三","李四");  转出来的list,实际上是java.util.Arrays$ArrayList

这种list是继承AbstractList,remove,add等method在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。java.util.Arrays$ArrayList继承了静态数组 大小 固定不变的特性。



我们常用的却是java.util.ArrayList。
3 楼 Mr.TianShu 2012-11-20  
只是一些api 不熟练。不知道,就不会用

能将List 强制转换为ArrayList么?
2 楼 haiyang5210 2010-01-07  
非常棒!!!!!!
1 楼 iwlk 2009-04-20  
String[] array = (String[])list.toArray(new String[size]);


List<String> list = Arrays.asList("王利虎","张三","李四");


建义把这两句标红. 最经典之处

相关推荐

    Android中ArrayList和数组相互转换

    ArrayList和数组都是常见的数据存储方式,两者之间可以方便地进行转换。以下详细介绍ArrayList与数组的相互转换方法。 首先,我们将讨论如何将ArrayList转换为数组。ArrayList继承自Java的List接口,提供了toArray...

    Java ArrayList 数组之间相互转换

    总之,Java提供了便捷的方法来处理ArrayList和数组之间的转换,使得在不同数据结构之间切换变得简单。理解并熟练掌握这些转换方法,对于提升Java编程效率和代码质量至关重要。在编写代码时,根据实际需求选择合适的...

    集合(list为例)与数组的互相转换。

    这里我们将详细探讨如何将集合(以ArrayList为例)与数组进行互相转换,并理解其中的关键点。 首先,集合(List)是Java集合框架的一部分,提供了动态增长的能力,可以方便地添加、删除元素。而数组则是固定大小的...

    java中ArrayListMapObject与Json互相转换.pdf

    JSON主要有两种基本结构:对象(Object)和数组(Array)。对象以花括号({})包裹,由键值对组成,键(key)是字符串,值(value)可以是多种类型,包括数字、字符串、数组或另一个JSON对象。数组则以方括号([])...

    java 数据类型转换

    在Java编程语言中,数据类型转换是至关重要的概念,它涉及到不同类型的变量之间的相互转化。Java分为两大类数据类型:基本数据类型(如int、char、float等)和引用数据类型(如类、接口和数组)。本文将深入探讨Java...

    list,set,map,数组之间的相互转换详细解析

    了解这些转换方法后,开发者可以根据具体需求灵活地在list、set、map和数组之间进行转换,提高代码的灵活性和效率。然而,需要注意的是,不同数据结构间的转换可能会改变原有的顺序,比如List转Set时会丢失原有顺序...

    java实现列表、集合与数组之间转化的方法

    例如,给定一个ArrayList `list`,我们可以使用`toArray()`方法将其转换为数组: ```java List&lt;String&gt; list = new ArrayList(); list.add("a"); list.add("b"); // 将List转换为Object数组 Object[] array = list...

    Java集合与数组区别简介及相互转换实例

    Java集合(Collection)和数组(Array)是Java语言中两种常用的数据存储结构,它们之间存在着一定的区别和联系。本文将主要介绍Java集合与数组的区别简介及相互转换实例,以便读者更好地理解和应用它们。 一、数组...

    Java中List与数组相互转换实例分析

    在Java编程中,List和数组是两种常见的数据结构,它们各有特点,但有时我们需要在两者之间进行转换。本文将详细讨论如何在Java中进行List与数组之间的转换,并分析转换过程中可能出现的问题及解决方案。 首先,让...

    C#中List〈string〉和string[]数组之间的相互转换

    在C#编程中,我们经常会遇到需要在列表(List)和数组(Array)之间进行数据转换的情况。List是.NET框架中常用的一种动态数组,而string[]则是字符串类型的静态数组。这两种数据结构各有特点,适用于不同的场景。下面...

    java list与数组之间的转换详细解析

    在Java编程中,List和数组是两种常见的数据结构,它们各有特点,但在实际开发中经常需要进行相互转换。本篇文章将详细介绍如何在Java中实现List与数组之间的转换。 1. 数组转换为List Java中,可以使用`Arrays`类...

    JSON在Java中的相互转换示例详解

    JSON是一种基于键值对的数据表示方式,它由对象(对象是一组键值对,用花括号{}包围)和数组(数组是一组有序的值,用方括号[]包围)构成。值可以是字符串、数字、布尔值、null、数组或者嵌套的对象。 在Java中,...

    google-gson-2.1-release

    5. **复杂类型的处理**:Gson可以处理嵌套的对象和数组,以及日期、枚举等复杂类型。 6. **字段忽略**:通过`@Expose`注解,可以选择哪些字段参与序列化和反序列化,不希望暴露的字段可以被忽略。 7. **流式API**:...

    json-lib通用类

    `jsonUtil.txt` 文件可能是一个包含了`json-lib`使用示例或者实用工具函数的文本文件,它可能包含如何创建JSON对象、如何将Java对象转换为JSON以及如何处理复杂数据结构(如嵌套对象和数组)的代码片段。在实际项目...

    Java集合List与Array的相互转换

    在Java编程中,集合(Collections)和数组(Arrays)是两种常见的数据结构,它们各有特点,但在实际开发中,我们经常需要在两者之间进行转换。本文将详细介绍如何在Java中将List转换为Array,以及Array转换为List。 ...

    fastjson-1.2.9.jar.7z

    6. **集合和数组的支持**:Fastjson不仅支持基本类型的转换,还能够处理复杂的集合和数组。例如,可以方便地将JSONArray转换为ArrayList,或将JSON数组直接映射为Java数组。 7. **JSONPath支持**:类似于XPath用于...

    json-lib-2.4(2013.6.13前最新版本)选定版

    4. **集合和数组的支持**:`json-lib`可以处理Java的ArrayList、LinkedList、HashSet、TreeSet等集合,以及基本类型的数组,将其转化为JSON数组或对象。 5. **XML与JSON的互换**:`json-lib`还提供了XML与JSON之间...

    java集合使用大全

    1. 几种集合间相互转换以及类集与对象数组之间的转换 * 每种集合类中都提供它独有的 API 函数,在程序中使用正确集合类可以提高开发的效率 2. 集合的输出 * 使用迭代器(Iterator 接口)将集合对象实例转换成 ...

    json-lib-2.4-jdk15及其依赖jar包

    2. **JSON对象和数组**:`json-lib`提供了解析和生成JSON对象(JSON Object)和数组(JSON Array)的能力,这些对象可以映射为Java的HashMap和ArrayList。 3. **类型转换**:库支持将Java对象如Date、Number、...

    Tedu一段Java集合Collection

    集合和数组之间可以相互转换: - **集合转换为数组**:可以通过`Collection`接口的`toArray()`方法将集合转换为数组。如果希望转换后的数组类型特定,则可以传递一个数组作为参数,`toArray()`方法会返回相同类型的...

Global site tag (gtag.js) - Google Analytics