集合和数组相互转换[通俗易懂]

集合和数组相互转换[通俗易懂]集合转数组【强制】使用集合转数组的方法,必须使用集合的toArray(T[]array),传入的是类型完全一样的数组,大小就是list.size()。说明:使用toArray带参方法,入参分配的数组空间不够大时,toArray方法内部将重新分配内存空间,并返回新数组地址;如果数组元素个数大于实际所需,下标为[list.size()]的数组元素将被置为…

大家好,又见面了,我是你们的朋友全栈君。

集合(List)转数组

      【强制】使用集合转数组的方法,必须使用集合的 toArray(T[] array),传入的是类型完全 一样的数组,大小就是 list.size()。 说  明:使用 toArray 带参方法,入参分配的数组空间不够大时,toArray 方法内部将重新分配 内存空间,并返回新数组地址;如果数组元素个数大于实际所需,下标为[ list.size() ] 的数组元素将被置为 null,其它数组元素保持原值,因此最好将方法入参数组大小定义与集 合元素个数一致。正例:

List<String> list = new ArrayList<String>(2);
list.add("guan");
list.add("bao");
String[] array = new String[list.size()]; 
array = list.toArray(array); 

     反例:直接使用 toArray 无参方法存在问题,此方法返回值只能是 Object[]类,若强转其它 类型数组将出现 ClassCastException 错误

数组转集合(List)

使用Arrays中的asList方法,下边是阿里巴巴Java开发手册中的摘要:

  【强制】使用工具类 Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方 法,它的 add/remove/clear 方法会抛出 UnsupportedOperationException 异常。 说明:asList 的返回对象是一个 Arrays 内部类,并没有实现集合的修改方法。Arrays.asList 体现的是适配器模式,只是转换接口,后台的数据仍是数组。 
    String[] str = new String[] { “you”, “wu” };                                                                                                                                  List list = Arrays.asList(str);                                                                                                                                                      第一种情况:list.add(“yangguanbao”); 运行时异常,下边是异常的原因                                                                                  第二种情况:str[0] = “gujin”; 那么 list.get(0)也会随之修改。 

 public static <T> List<T> asList(T... a) {
        return new ArrayList<>(a);
    }

  集合和数组相互转换[通俗易懂]

List和Set相互装换

直接用构造方法就好了:

Set<String> set=new HashSet<>(list);
List<String> test=new ArrayList<>(set);

 

Set转数组同List

      List和Set都是Collection的孩子,而toArray是Collection的抽象方法。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/147836.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月29日 下午8:16
下一篇 2022年6月29日 下午8:36


相关推荐

  • 博弈论分析题_博弈论

    博弈论分析题_博弈论问题描述小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买10颗糖。你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。大于17的任何数字都可以用4和7组合出来。本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。输入格式两个正整数,表示每种

    2022年10月15日
    3
  • 查看是否安装apache_查找手机应用安装位置

    查看是否安装apache_查找手机应用安装位置如果你是问linux自动安装的APACHE的话,直接使用apachectl -v命令,如果告诉你没有这个方法就可以知道系统没有安装apache,如果已经安装了则显示apache的版本,至于安装目录,使用apachectl -c就可以知道了。

    2026年2月6日
    6
  • 收藏 | AI开发必看:从提示工程到上下文工程,掌握大模型信息环境的艺术

    收藏 | AI开发必看:从提示工程到上下文工程,掌握大模型信息环境的艺术

    2026年3月19日
    2
  • 单片机uart串口通信_uart接口图片

    单片机uart串口通信_uart接口图片RS-232-C标准采用负逻辑方式,标准逻辑“1”对应-5v~-15v,标准逻辑“0”对应+5V~+15v。如果需要和单片机系统的CMOS/TTL电平进行连接,则需要进行电平转换,一般采用MAX232进行电平转换。 1  UART接口简述 UART即通用异步收发器,可设置成全双工异步通讯方式,与PC等通讯;或设置成半双工同步模式与其他周边外设通信,如A/D或D/A。

    2025年11月14日
    6
  • debian 上配置 apache php mysql

    debian 上配置 apache php mysqlapt getinstallap gdphp4 mysqlmysql servermysql client 接着 apachectlsta nbsp 如果提示不能 libphp4 so 则用新立得软件包管理器 安装 libapache mod php4 则在 usr lib apache 1 3 下会发现有 so 文件 此时应该可以用 apachectlst

    2026年3月17日
    2
  • Linux安装mariadb_sql数据库安装失败

    Linux安装mariadb_sql数据库安装失败1.下载MariaDB数据库测试:当前虚拟机是否可以正确的链接外网.命令:[root@localhostsrc]#yuminstallmariadb-server2确认下载3安装完成提示4数据库启动命令: 1.启动命令[root@localhostsrc]#systemctlstartmariadb 2.重启命令[root@localhostsrc]#systemctlrestartmariadb 3.

    2022年10月17日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号