`

集合和数组相互转换

 
阅读更多

数组和List、set都可以存放多个元素,数组的特点是长度固定,访问非常快,元素类型单一;List的特点是长度可以动态的增加,能维护元素的次序,存放的所有元素都当作Object,允许元素重复;Set的特点是长度可以动态的增加,能够保证元素不重复,存放入的所有元素都当作Object。本节实例介绍Set、List和数组之间如何转换,将Set、List对对象中的元素转换成数组,将数组转换成List、Set对象,转换过程中元素保持不变。

 实现的关键点:
List转换成数组可以使用List的toArray方法,返回一个Object数组。
Set转换成数组可以使用Set的toArray方法,返回一个Object数组。
 如果List或者Set中元素的 类型 都为 A,那么可以使用带参数的toArray方法,将得到类型为A的数组,具体语句是“(A[])set.toArray(new A[0]);
数组转换成List可以使用Arrays的asList静态方法,得到一个List。
 数组转换成Set时,需要先将数组转换成List,再将List构造Set。
例如下:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * 数组与Collection之间的转换
 */
public class ArrayCollection {

 public static void main(String[] args) {
  
  List list = new ArrayList();
  list.add("aaa");
  list.add("bbb");
  list.add("ccc");
  list.add("ddd");
  //当List中的数据类型都一致时,可以将list转化成数组
  //转化成对象数组时,直接调用toArray方法
  Object[] objArray = list.toArray();
  System.out.println("从list转化成的对象数组的长度为: " + objArray.length);
  //在转化成其他类型的数组时,需要强制类型转换,并且,要使用带参数的toArray方法。
  //toArray方法的参数为一个对象数组,将list中的内容放入参数数组中
  //当参数数组的长度小于list的元素个数时,会自动扩充数组的长度以适应list的长度
  String[] strArray1 = (String[])list.toArray(new String[0]);
  System.out.println("从list转化成的字符串数组的长度为: " + strArray1.length);
  //分配一个长度与list的长度相等的字符串数组。
  String[] strArray2 = (String[])list.toArray(new String[list.size()]);
  System.out.println("从list转化成的字符串数组的长度为: " + strArray2.length);
  list.clear();//清空List
  
  //将数组转化成List
  //逐个添加到List
  for (int i=0; i<objArray.length; i++){
   list.add(objArray[i]);
  }
  System.out.println("从数组转化成的list的元素个数: " + objArray.length);
  list.clear();//清空List
  //直接使用Arrays类的asList方法
  list = Arrays.asList(objArray);
  System.out.println("从数组转化成的list的元素个数: " + objArray.length);
  
  Set set = new HashSet();
  set.add("aaa");
  set.add("bbb");
  //Set转化成数组
  objArray = set.toArray();
  strArray1 = (String[])set.toArray(new String[0]);
  strArray2 = (String[])set.toArray(new String[set.size()]);
  
  //数组转换成Set
  //将数组转换成List后,再用List构造Set
  set = new HashSet(Arrays.asList(objArray));
  //将Set清空,然后把数组转换成的List全部add
  set.clear();
  set.addAll(Arrays.asList(strArray1));
 }

 

}

分享到:
评论

相关推荐

    java List和数组相互转换方法-list集合转数组.md

    list转数组

    Android中ArrayList和数组相互转换

    在我们日常开发中难免会要将ArrayList和数组相互转换,那么如何才能相互转换呢?下面跟着小编一起通过这篇文章学习学习。

    androidmap转json字符串、list转json字符串工具类.zip

    java,android map形式和数组list转json字符串 可直接调用

    正规文法转正规式+正规式NFA(完整可运行代码)

    本程序有很多数据结构,但最终的目的数据结构是存储转化好的NFA图的单元cell,里面包含起点、终点、边数以及边集合。 先读入正规式,并对正规式进行合法检测,将正规式中填入连接符号“+”,然后将其转化成后缀...

    字符串文件http密码资源文件openoffice图片等工具等

    BeanHelper提供了bean类与map的互相转换 PropertiesUtil实现对properties文件的读与写,参数文件名不包括.properties SysConfig实现对指定系统资源文件(config/sysConfig.properties)的读取操作,利用修改时间判断...

    22-ajax-源代码.rar

    案例2-站内查询。 一、Ajax概述 ...注意:对象格式和数组格式可以互相嵌套 注意:json的key是字符串 jaon的value是Object json的解析: json是js的原生内容,也就意味着js可以直接取出json对象中的数据

    有声有色 2008 Build 0516

    内码转换功能可以帮您在繁体中文(Big5)与简体中文(Gb2312)之间互相转换;网页压缩功能可以压缩网页大小,而不影响正常浏览,减少网页下载时间;屏幕取色功能,可以获取电脑屏幕上显示的任何一种颜色;即时预览功能...

    Objective-C2.0程序设计

    4.2.4 整型值和浮点值的相互转换 4.2.5 类型转换运算符 4.3 赋值运算符 4.4 计算器类 4.5 位运算符 4.5.1 按位与运算符 4.5.2 按位或运算符 4.5.3 按位异或运算符 4.5.4 一次求反运算符 4.5.5 向左移位运算符 4.5.6 ...

    python3.8入门教程完整版-Python3.8从入门到精通(视频教学版).pdf

    python3.8⼊门教程完整版_Python3.8...18 2.5 简单数据类型 18 2.5.1 数字类型 19 2.5.2 字符串类型 22 2.5.3 数据类型的相互转换 23 2.6 Python结构数据类型 24 2.6.1 集合类型(Sets) 24 2.6.2 列表类型(List) 25 2.6

    2005-2009软件设计师历年真题

     • 二进制、十进制和十六进制等常用制数制及其相互转换  1.2 数据的表示  • 数的表示(原码、反码、补码、移码表示,整数和实数的机内表示,精度和溢出)  • 非数值表示(字符和汉字表示、声音表示、图像表示...

    C#微软培训资料

    第四章 数 据 类 型 .28 4.1 值 类 型 .28 4.2 引 用 类 型 .33 4.3 装箱和拆箱 .39 4.4 小 结 .42 第五章 变量和常量 .44 5.1 变 量 .44 5.2 常 量 .46 5.3 小 结 .47 第六章 类 型 转 换 .48 ...

    计算机应用基础专科20.9作业参考答案.docx

    请简述十进制数与二进制数相互转换的规则? 答:要将一个十进制数转换成二进制数,通常采用的方法是基数乘除法。这种转换方法是对十进制数的整数部分和小数部分分别进行处理,整数部分用除基取余法,小数部分用乘基...

    数据库系统概论部分答案.doc

    答: ( l )数据结构化数据库系统实现整体数据的结构化,这是数据库的主要特征之一,也是数 据库系统与文件系统的本质区别。 ( 2 )数据的共享性高,冗余度低,易扩充数据库的数据不再面向某个应用而是面向整个系 ...

    数据库系统的一些专用词汇表.txt

    是指相互关联的数据集合与操纵数据的软件工具集合。DBS = DB+DBMS . 数据库应用程序接口API(Application Programming Interface): 是由DBMS为开发应用程序提供的操纵和访问数据库中数据的接口函数、过程或语言。 ...

    Excel百宝箱9.0无限制破解版.rar

    【VBA窗体帮助信息查询】:窗体相关的VBA帮助查询,包括事件、方法、属性、对象、集合与控件 【函数运算符符语法查询】:VBA函数以及运算符相关的帮助查询 【反向选择】:选择当前区域中未选择的区域 【千年日历】:...

    管理信息系统概论3.doc

    德尔菲法 由项目组收集与项目有关领域专家的意见,经整理后反馈给专家,再次征询意见,如此 反复,以得出最后的意见。 6.信息系统:信息系统是一个人造系统,它由人、计算机硬件、软件和数据资源组成, 目的是及时、...

    JavaScript王者归来part.1 总数2

     5.6.3 值与引用的相互转换:装箱和拆箱   5.7 类型识别与类型转换   5.7.1 运行时类型识别--两个运行的类型识别的例子   5.7.2 类型的自动转换及其例子   5.7.3 强制类型转换及其例子   5.7.4 高级用法-...

    Exce百宝箱——2012版本.rar

    【VBA窗体帮助信息查询】:窗体相关的VBA帮助查询,包括事件、方法、属性、对象、集合与控件 【函数运算符符语法查询】:VBA函数以及运算符相关的帮助查询 【反向选择】:选择当前区域中未选择的区域 【千年日历】:工...

Global site tag (gtag.js) - Google Analytics