ArrayToListDemo 数组和List之间的互相转换 2个Demo

/**
List的toArray方法用于将集合转换为数组
但实际上该方法是在Collection中定义的,所以所有的集合都具备这个功能。
    其中共有2个方法:
    Object[] toArray()        一般不用
    <T>T[] toArray(T[] a)    常用
其中第二个方法是比较常用的,我们可以传入一个指定类型的数组,
该数组的元素类型应与集合的元素类型一致。返回值则是转换后的数组,该数组会保存集合中所有的元素。

注意: 参数a 的含义为要存储列表中元素的数组的长度,如果它足够大的话则存入到该数组中;
      否则为此长度分配一个运行时类型相同的新数组。 

案例 将集合List转换为数组,详细要求如下所示:
1) 创建List接口的引用list,使该引用指向ArrayList的实例;将字符串“a”、“b”、“c”放入集合list中。
2) 将集合list转换为数组,并输出数组中的元素。
 */
public class ListToArrayDemo {

    public static void main(String[] args) {
        /* 案例 将集合List转换为数组 */
        //1) 创建List接口的引用list,使该引用指向ArrayList的实例;将字符串“a”、“b”、“c”放入集合list中。
        List<String> list = new ArrayList<String>();
        list.add("a");
        list.add("b");
        list.add("c");

        //2) 将集合list转换为数组,并输出数组中的元素。
        //用第二种方法
        String[] toArrayStr = list.toArray(new String[list.size()] );
        /*这里注意new String[长度],如果这个长度设定的不够装下集合中的元素,那么系统会
        自动新建一个数组,接收这个返回值.但是也尽量不要设定长度,就用list.size就可以了*/
        for(String str: toArrayStr){
            System.out.print(str + "\t");        // a    b    c
        }
    }
}

ArrayToListDemo

/**
 *    将数组转换为集合    static <T>List<T> asList<T… a>
Arrays类中提供了一个静态方法asList,使用该方法我们可以将一个数组转换为对应的List集合。

注意: 1.返回的List集合元素类型由传入的数组元素类型决定
     2.返回的List集合,我们不能对其进行增删操作,否则会抛出异常
     3.返回的List集合,对其进行修改,会改变对应的原来数组中的元素.
     4.想要修改返回的List集合,最好的办法就是复制一个新的集合,脱离和原数组的关系,增删就都可以操作了.
补充1: 我们发现,现在的list所属的是Arrays的内部类,而不是真正的java.util.ArrayList类.
        所以就不难理解,为何无法增删,只能修改,并且修改原数组还在改变的原因.
补充2: 所有的集合都支持一个含有Collection类型作为参数的构造方法。该构造方法又称为复制
        构造器。可以在创建当前集合的同时包含给定集合中的 所有元素。

案例 将数组转换为List集合,详细要求如下所示:
1) 构建字符串数组strArr,数组元素为“a”、“b”、“c”。
2) 将数组strArr转换为List集合变量list,并输出集合list;然后向list集合中添加元素“d”,运行后查看输出结果。
3) 获取变量list所属的类型的名称。
4) 构建集合list1,使用List的addAll方法将数组转换来的集合添加到list1中。
 */
public class ArrayToList {

    public static void main(String[] args) {

        /*  案例 将数组转换为List集合  */
        //1) 构建字符串数组strArr,数组元素为“a”、“b”、“c”。
        String[] strArr = {"a","b","c"};

        /*2) 将数组strArr转换为List集合变量list,并输出集合list;
        然后向list集合中添加元素“d”,运行后查看输出结果。    */
        List<String> list = Arrays.asList(strArr);
        System.out.println(list);        //[a, b, c]
//        list.add("d");
        /*    在添加d元素后,会抛出异常,证明不能在转换后的list中增删元素
         * Exception in thread "main" java.lang.UnsupportedOperationException
         */

        //3) 获取变量list所属的类型的名称。
        System.out.println(list.getClass().getName());
        /*java.util.Arrays$ArrayList
         我们发现,现在的list所属的是Arrays的内部类,而不是真正的java.util.ArrayList类.
         所以就不难理解,为何无法增删,只能修改,并且修改原数组还在改变的原因.
         */

        //4) 构建集合list1,使用List的addAll方法将数组转换来的集合添加到list1中。
        List<String> list1 = new ArrayList<String>();
        list1.addAll(list);        //复制list的内容
        list1.add("d");
        System.out.println("list1的内容: "+list1);        //list1的内容: [a, b, c, d]

        //5) 用补充2提到的方法,来复制list1
        List<String> list2 = new ArrayList<String>(list1);
        /*所有的集合都含有一个使用Collection类型作为参数的构造方法,该方法称为复制构造器*/
        System.out.println("list2的内容: "+list2);        //list2的内容: [a, b, c, d]
        //同样复制了list的内容
    }
}
时间: 2024-10-12 07:07:19

ArrayToListDemo 数组和List之间的互相转换 2个Demo的相关文章

PHP数组和Json之间的互相转换 json_encode() 和 json_decode()

之所以要用到Json,很多时候是因为使用ajax对象时,程序与JS函数之间的数据交互.因为JS不认识PHP中的数组,PHP也不认识JS中的数组或对象.Json很好的解决了这个问题. Json简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript的一个子集,这意味着JavaScript可以直接读取Json,非常方便. Json的具体形式是: 1.对象 对象是一个无序的“‘名称/值’对”集合.一个对象以“{”(左括号)开始,“}

PHP数组与对象之间用递归转换

一些简单的对象与数组的相互转换的问题,采用递归写了两个方法如下 ? 1 2 3 4 5 6 7 8  function arrayToObject($e){          if( gettype($e)!='array' ) return;      foreach($e as $k=>$v){          if( gettype($v)=='array' || getType($v)=='object' )                 $e[$k]=(object)arrayTo

数组之间如何进行转换

分析问题 在程序中,类型转换无处不在,数组类型也不例外.对于普通的类型,子类对象可以隐式地转换为父类类型,所有的数组类型都继承自System.Array类型,不存在相互间的关系,但隐式转换仍然被允许,其机制如下: 1.包含值类型项目的数组不能隐式地转换成其他任何类型. 2.两个数组类型能够相互转换的一个前提是两者维数相同. 在满足上述两个前提下,源数组的项目类型必须存在一个隐式或者显式的转换到目标数组的项目类型. 下面的一些代码说明了转换的机制: //编译成功 string[] sz={"a&q

List Set与数组之间的互相转换

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

CString string char* char 之间的字符转换(多种方法)

在写程序的时候,我们经常遇到各种各样的类型转换,比如 char* CString string 之间的互相转换.首先解释下三者的含义. CString 是一种很有用的数据类型.它们很大程度上简化了MFC中的许多操作(适用于MFC框架),使得MFC在做字符串操作的时候方便了很多.需要包含头文件#include <afx.h>. C++中的string用于便是字符串,功能比较强大.要想使用标准C++中string类,必须要包含#include <string>// 注意是<str

二进制与十进制之间蛮好的转换方式

假如给你一个二进制 1101101010101  问你转换成10进制是多少  反正 我第一想到的是用2的k次方 这样算 其实完全不用 用如下代码 就可-------我们假设以 字符串来接受这个二进制 一般我们也都是这样做的 1 for( int i = 0 ; str[i]!='\0' ; i++ ) 2 { 3 sum = sum*2 + str[i] - '0'; 4 } 我们通过这个*2也达到了 k次方这个效果 因为i =0恰恰是 二进制的最高位 同样 当我任意给你一个十进制数字  234

byte数组与对象之间的相互转换

在进行网络通信时可能需要传输对象,如果用NIO的话,只能用Bytebuffer和channel直接 通过ByteArray*Stream和Object*Stream可以将byte数组和对象进行相互的转换. 1.byte数组转对象: byte [] data=initData();//初始化byte数组 ByteArrayInputStream inputStream=new ByteArrayInputStream(data); ObjectInputStream oInputStream=ne

office之间的格式转换解析 如何将ppt转换成word

Office文档之间可以进行相互转换吗?这个问题问出来,很多人的第一反应就是不能,Microsoft office有不少的类型文档,针对不同的领域,有各自不同的功能,正因为他们直接的"不同",所以将格式转换变得困难.也不是没有人试过,像是复制后粘贴就是一种好方法,但是说"转换"还太勉强.下面为大家介绍:office之间的格式转换解析,如何将ppt转换成word? 步骤1,首先下一个可以转换文档格式的工具,请将下载安装软件,并点击"立即运行"在安装

计算机硬盘大小转换(B,KB,MB,GB,TB,PB之间的大小转换)

程序猿都非常懒.你懂的! java程序猿在实际的开发中会遇到非常多的单位换算问题.今天我给大家带来的是关于计算机硬盘大小的换算.多数情况下.一般要求b,kb,mb,gb,tb,pb之间的大小转换,我们都知道他们之间的换算是乘以1024或者除以1024.可是详细怎么用java代码来实现呢?请看以下的代码: package com.herman.utils; /*** * @see 存储大小(单位)转换器. * @author Herman.Xiong * @date 2014年5月27日 13:2