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

List和Set都是接口,它们继承Collection(集合),集合里面任何数据类型都可以添加

List是有序的队列,可以用重复的元素;而Set是数学概念中的集合,不能有重复的元素。

数组 长度固定  可存储任何数据类型       集合 长度可变(包括:list,set)可存储任何数据类型

列表 list   有序   长度可变   元素可重复     集set  无序   长度可变   元素不可重复

将数组转化为一个列表时,程序员们经常这样做:

String[] arr = {"a","b","c", "d", "e"};

List<String> list = Arrays.asList(arr);

Arrays.asList()会返回一个ArrayList对象,ArrayList类是Arrays的一个私有静态类,

而不是java.util.ArrayList类,java.util.Arrays.ArrayList类有set()、get()、contains()方法,

但是没有增加元素的方法,所以它的大小是固定的,想要创建一个真正的ArrayList类,

你应该这样做:

String[] arr = {"a","b","c", "d", "e"};

ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(arr));

也可以这样做:

for(int i=0; i<arry.length; i++){
list.add(arry[i])
}

将一个数组列表转换为数组

  1. String[] stringArray = { "a", "b", "c", "d", "e" };
  2. ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(stringArray));
  3. String[] stringArr = new String[arrayList.size()];  ------------------定义数组必须先定义数组的长度,由于数组长度固定
  4. arrayList.toArray(stringArr);
  5. for (String s : stringArr)
  6. System.out.println(s);

List转换为Array也可以这样处理:

ArrayList<String> list=new ArrayList<String>();

String[] strings = new String[list.size()]; ------------------定义数组必须先定义数组的长度,由于数组长度固定

list.toArray(strings);

反过来,如果要将数组转成List怎么办呢?如下:

String[] s = {"a","b","c"};
List list = java.util.Arrays.asList(s);

将一个数组转换为集(set)

  1. Set<String> set = new HashSet<String>(Arrays.asList(stringArray));
  2. System.out.println(set);
  3. //[d, e, b, c, a]

将一个集(set) 转换为数组

arry=set.toArry();
arry=(String[])set.toArry(new String[set.size()]);

下面是一段代码显示了 数组,列表,集合之间的转换

package test;  

import java.util.ArrayList;  

import java.util.Arrays;  

import java.util.HashSet;  

import java.util.List;  

import java.util.Set;  

public class Test2 {
    public static void main(String[] args) {  

        List list = new ArrayList();  

        list.add("a");  

        list.add("b");  

        list.add("c");  

        list.add("d");  

        // list.add(1);//会产生java.lang.ArrayStoreException异常  

        // 当list中的数据类型都一致时可以将list转化为数组  

        Object[] array = list.toArray();  

        System.out.println("从list转换成的对象数组长度为:" + array.length);  

        // 在转化为其它类型的数组时需要强制类型转换,并且,要使用带参数的toArray方法,参数为对象数组,  

        // 将list中的内容放入参数数组中,当参数数组的长度小于list的元素个数时,会自动扩充数组的长度以适应list的长度  

        String[] array1 = (String[]) list.toArray(new String[0]);  

        System.out.println("从list转换成的字符串数组长度为:" + array1.length);  

        // 分配一个长度与list的长度相等的字符串数组  

        String[] array2 = (String[]) list.toArray(new String[list.size()]);  

        System.out.println("从list转换成的字符串数组长度为:" + array2.length);  

        list.clear();  

        // 将数组转换成list  

        for (int i = 0; i < array.length; i++) {  

            list.add(array[i]);  

        }  

        System.out.println("将数组转换成list的元素个数为:" + list.size());  

        list.clear();  

        // 直接使用Arrays的asList方法  

        list = Arrays.asList(array);  

        System.out.println("将数组转换成list的元素个数为:" + list.size());  

        Set set = new HashSet();  

        set.add("a");  

        set.add("b");  

        // 将set转换为数组  

        array = set.toArray();  

        array1 = (String[]) set.toArray(new String[0]);  

        array2 = (String[]) set.toArray(new String[set.size()]);  

        System.out.println("从Set转换成的对象数组长度为:" + array.length);  

        System.out.println("从Set转换成的字符串数组长度为:" + array2.length);  

        // 数组转换成Set  

        // 将数组转换成List后,再用List构造Set  

        set = new HashSet(Arrays.asList(array));  

        System.out.println("将数组转换成Set的元素个数为:" + list.size());  

        // 将Set清空,然后把数组转换成的list全部add  

        set.clear();  

        set.addAll(Arrays.asList(array1));  

        System.out.println("将数组转换成Set的元素个数为:" + list.size());  

    }  

}  

from:http://www.cnblogs.com/111testing/p/6399394.html
时间: 2024-08-04 10:19:28

java中 列表,集合,数组之间的转换的相关文章

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中字符串与日期之间的转换

项目过程中,经常遇到需要字符串格式的日期和Date类型的日期之间的相互转换.使用SimpleDateFormat类,可以方便完成想要的转换. SimpleDateFormat能够实现本地化的时间格式化及转换.从选定一个自定义的模式(pattren)开始,模式由已经定义好的 'A' to 'Z' 及 'a' to 'z'字母组成,也可以在模式中引入文本,但要使用’(单括号)括住.下图就是已经定义好的模式字母表: Letter Date or Time Component Presentation

Java中字节与对象之间的转换

近期公司里面用到了消息队列,而正如我们知道的是消息队列之间的是通过二进制形式的.以下就分享一下java中字节与对象之间的转换. 主要是用到了ByteArrayOutputStream和ObjectOutputStream两个输出流,以及ByteArrayInputStream和ObjectInputStream两个输入流. 废话不多说了,直接上代码吧! /** * @FileName: ByteToObject.java * @Package:com.test * @Description: T

Java 中基本类型和字符串之间的转换

Java 中基本类型和字符串之间的转换 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换. 其中,基本类型转换为字符串有三种方法: 1. 使用包装类的 toString() 方法 2. 使用String类的 valueOf() 方法 3. 用一个空字符串加上基本类型,得到的就是基本类型数据对应的字符串 再来看,将字符串转换成基本类型有两种方法: 1. 调用包装类的 parseXxx 静态方法 2. 调用包装类的 valueOf() 方法转换为基本类型的包装类,会自动拆箱 PS:其他基

Java基础(35):装箱与拆箱---Java 中基本类型和包装类之间的转换

基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦): 在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之间的转换就更加轻松便利了. 那什么是装箱和拆箱呢?我们分别来看下 装箱:把基本类型转换成包装类,使其具有对象的性质,又可分为手动装箱和自动装箱 拆箱:和装箱相反,把包装类对象转换成基本类型的值,又可分为手动拆箱和自动拆箱 下面的代码的例子演示了装箱与拆箱的过程: 结果为: 1 public class HelloWorld { 2 pub

java中日期与字符串之间的转换

import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date; public class DateUtil { private DateUtil() { } /** * 将日期格式转换成一个字符串 * @param d * 被转换的日期对象 * @param format * 传递过来的要被转换的格式 * @return * 转换后的字符串 */ public static Stri

C#中List和数组之间的转换

一.List转数组 (从List<string>转到string[]) C# 代码   复制 List<string> listS=new List<string>(); listS.Add("str"); listS.Add("hello"); string[] str=listS.ToArray(); 二.数组转List (从string[]转到List<string>) C# 代码   复制 string[] s

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和数组之间转换的关键技术点如下:

java中的集合操作类(未完待续)

申明: 实习生的肤浅理解,如发现有错误之处,还望大牛们多多指点 废话 其实我写java的后台操作,我每次都会遇到一条语句:List<XXXXX> list = new ArrayList<XXXXX>(); 但是我仅仅只是了解,list这个类是一个可变长用来存储的对象实例的类,我甚至觉得这个List对象可以理解成数组,但是却又与java中咱们正常理解的数组很多的不同,比如说,他的长度可以随着需要自动增长,比如说,实例化一个List类就和咱们声明数组的时候是不一样的! 今天的实习生活