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

集合和数组相互转换[通俗易懂]集合转数组【强制】使用集合转数组的方法,必须使用集合的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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • html里制作简单导航栏

    html里制作简单导航栏今天简单的做了一下网页里的导航栏。效果如下:代码: 实验3 ul{/*设置导航栏的框框*/ margin:30pxauto;/*框框整体的位置,30px是指离网页的顶部和下部的距离,auto控制的是左右距离为自动调节*/ width:600px;/*框框的宽度*/ height:350px;/*框框的长度*/ pad

    2022年5月28日
    48
  • function_exists与method_exists区别

    function_exists与method_exists区别1.method_exists—检查类的方法是否存在说明method_exists(mixed$object,string$method_name):bool检查类的方法是

    2022年7月1日
    20
  • 详细阐述基于时间的反向传播算法(Back-Propagation Through Time,BPTT)「建议收藏」

    详细阐述基于时间的反向传播算法(Back-Propagation Through Time,BPTT)「建议收藏」上一节我们说了详细展示RNN的网络结构以及前向传播,在了解RNN的结构之后,如何训练RNN就是一个重要问题,训练模型就是更新模型的参数,也就是如何进行反向传播,也就意味着如何对参数进行求导。本篇内容就是详细介绍RNN的反向传播算法,即BPTT。首先让我们来用动图来表示RNN的损失是如何产生的,以及如何进行反向传播,如下图所示。上面两幅图片,已经很详细的展示了损失是如何产生的,以及…

    2022年6月23日
    37
  • SSL连接建立过程分析(1)

    SSL连接建立过程分析(1)

    2021年11月28日
    52
  • 免费的UML工具

    免费的UML工具VisualParadigmCommunityEdition是自2004年以来推出的,旨在提供免费的UML软件,用于非商业目的,支持在UML建模方面迈出第一步的用户,以及需要免费的跨平台UML建模软件的用户个人使用,如在学生项目中使用UML。UML建模工具免费用于各种非商业目的。支持13个UML2.x图和ERD图。VisualParadigmCommFreeUMLToolforPersonalandnon-Commercialpurposes,downloadnow!

    2022年7月12日
    14
  • Linux 查看java进程的命令

    Linux 查看java进程的命令刚才去了微众税银面试。面试官赶时间,导致我的语速也快了起来,其中有个问题没答上,那就是Linux下查看java进程的命令。回来做个记录,以防还有公司问到(之前工作上遇到Linux还是太少了(;´д`)ゞ,服)。Linux下查看和停止所有java进程在Linux下查看所有java进程命令:ps-ef|grepjava停止所有java进程命令:pkill-9java停止特…

    2022年8月24日
    7

发表回复

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

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