ArrayList和数组之间的转换

转载:http://blog.csdn.net/brave_heart_lxl/article/details/6178909

List----->数组
开发中不免碰到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
 那么又怎么将数组转换成为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)); 


}

时间: 2024-10-31 04:22:19

ArrayList和数组之间的转换的相关文章

JAVA中list,set,数组之间的转换详解

JAVA的list,set,数组之间的转换,主要是使用Apache Jakarta Commons Collections,具体的方法如下:import org.apache.commons.collections.CollectionUtils; String[] strArray = {"aaa", "bbb", "ccc"};    List strList = new ArrayList();    Set strSet = new Ha

Java 集合与数组之间的转换

Java 集合与数组之间的转换 @author ixenos 数组转集合 Arrays.asList(T... a) 先给结论:用 Arrays.asList(T... a) 将数组转换成集合 (T...a)是可变参数,看成(T[] a)即可 <T> List<T> asList(T... a) 返回一个受指定数组支持的固定大小的列表,这是披着List外表的纯数组,只是原数组的一个视图(对返回列表的更改会“直接写”到数组.) 返回的列表是可序列化的,并且实现了 RandomAcce

集合与数组之间的转换

数组和List.Set都可以存放多个元素,数组的特点是长度固定,访问速度非常快,元素类型单一:List的特点是长度可以动态增加,能够维护元素的次序,存入的所有元素都当做Object,允许元素重复:Set的特点是长度可以动态增加,能够保证元素不重复,存入的所有元素都当做Object.本节实例介绍Set.List和数组之间如何转换,将Set.List对象中的元素转换为数组,将数组转换为Set.List对象,转换过程中元素保持不变. 关键技术剖析: 实现List.Set和数组之间转换的关键技术点如下:

C# 16进制与字符串、字节数组之间的转换

1.请问c#中如何将十进制数的字符串转化成十六进制数的字符串 //十进制转二进制 Console.WriteLine("十进制166的二进制表示: "+Convert.ToString(166, 2)); //十进制转八进制 Console.WriteLine("十进制166的八进制表示: "+Convert.ToString(166, 8)); //十进制转十六进制 Console.WriteLine("十进制166的十六进制表示: "+Con

C# 16进制与字符串、字节数组之间的转换(转)

1.请问c#中如何将十进制数的字符串转化成十六进制数的字符串   //十进制转二进制 Console.WriteLine("十进制166的二进制表示: "+Convert.ToString(166, 2)); //十进制转八进制 Console.WriteLine("十进制166的八进制表示: "+Convert.ToString(166, 8)); //十进制转十六进制 Console.WriteLine("十进制166的十六进制表示: "+C

Delphi字符串、PChar与字符数组之间的转换

来自:http://my.oschina.net/kavensu/blog/193719 ----------------------------------------------------------------- var s: string; p: pchar; a: array[1..20] of char; 1.字符串 ---> PChar p := PChar(s); 2.PChar ---> 字符串 s := p; 3.PChar ---> 字符数组 StrCopy(@a

C#串口通讯,16进制与字符串、字节数组之间的转换。

1.将十进制数的字符串转化成十六进制数的字符串 //十进制转二进制Console.WriteLine("十进制166的二进制表示: "+Convert.ToString(166, 2));//十进制转八进制Console.WriteLine("十进制166的八进制表示: "+Convert.ToString(166, 8));//十进制转十六进制Console.WriteLine("十进制166的十六进制表示: "+Convert.ToStrin

java中 列表,集合,数组之间的转换

List和Set都是接口,它们继承Collection(集合),集合里面任何数据类型都可以添加 List是有序的队列,可以用重复的元素:而Set是数学概念中的集合,不能有重复的元素. 数组 长度固定  可存储任何数据类型       集合 长度可变(包括:list,set)可存储任何数据类型 列表 list   有序   长度可变   元素可重复     集set  无序   长度可变   元素不可重复 将数组转化为一个列表时,程序员们经常这样做: String[] arr = {"a"

c#不同数组之间的转换【转载,消化自动删除】

c#中从string数组转换到int数组 string[] input = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };int[] output = Array.ConvertAll<string, int>(input, delegate(string s) {