java 将数组转化成List「建议收藏」

java 将数组转化成List「建议收藏」今天看了一个东东, 将数组转化成List,我当时只想到一种Collections.add();我想看看有没有其他方法,就百度了一下,结果,我很欣喜啊。。。给你们看看有几种方式吧这个问题是”在Java中怎样把数组转换为ArrayList?”1Element[]array={new Element(1),new El

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

今天看了一个东东, 将数组转化成List,我当时只想到一种Collections.add();

我想看看有没有其他方法,就百度了一下,结果,我很欣喜啊。。。

给你们看看有几种方式吧

这个问题是”在Java中怎样把数组转换为ArrayList?”

1
Element[] array = {

new 
Element(
1
),
new 
Element(
2
),
new 
Element(
3
)};

 

1.最流行也是被最多人接受的答案

最普遍也是被最多人接受的答案如下:

1
ArrayList<Element> arrayList = 
new 
ArrayList<Element>(Arrays.asList(array));

 

首先,我们来看下ArrayList的构造方法的文档。 
ArrayList(Collection < ? extends E > c) : 构造一个包含特定容器的元素的列表,并且根据容器迭代器的顺序返回。 
所以构造方法所做的事情如下: 
1.将容器c转换为一个数组 
2.将数组拷贝到ArrayList中称为”elementData”的数组中 
ArrayList的构造方法的源码如下:

1
2
3
4
5
6
7
public 
ArrayList(Collection<? 
extends 
E> c) {
       
elementData = c.toArray();
       
size = elementData.length;
 
       
if 
(elementData.getClass() != Object[].
class
)
             
elementData = Arrays.copyOf(elementData, size, Object[].
class
);
}

 

2.另外一个流行的答案

另外一个流行的答案是:

1
List<Element> list = Arrays.asList(array);

 

这不是最好的,因为asList()返回的列表的大小是固定的。事实上,返回的列表不是java.util.ArrayList,而是定义在java.util.Arrays中一个私有静态类。我们知道ArrayList的实现本质上是一个数组,而asList()返回的列表是由原始数组支持的固定大小的列表。这种情况下,如果添加或删除列表中的元素,程序会抛出异常UnsupportedOperationException

1
list.add(
new 
Element(
4
));

1
2
Exception in thread 
"main" 
java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList
    
at collection.ConvertArray.main(ConvertArray.java:
22
)

 

3.又一个解决方案(java.util.Collections包)

1
2
3
Element[] array = {

new 
Element(
1
), 
new 
Element(
2
)};
List<element> list = 
new 
ArrayList<element>(array.length);
Collections.addAll(list, array);

 

4.该问题的表明的东西

这个问题不难,但却很有趣。每个Java程序员都知道ArrayList,但却很容易犯下这样的错误。我想这就是这个问题很火的原因吧。如果是一个特定领域的Java库的相似的问题,就远不会这样火热了。

这个问题有好多答案提供了相同的解决方案,对于StackOverflow的其他问题也是这样。我猜想当人们想要回答一个问题时,是不会管别人说了什么的。

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MODIS数据介绍——波段、产品

    MODIS数据介绍——波段、产品MODIS是搭载在terra和aqua卫星上的传感器,MODIS扫描周期为1.477秒,每条扫描线沿扫描方向有1354个Pixels,沿卫星轨道方向有10个1KMD的IFOV。在每个IFOV中,1KM分辨率波段有1个采样,500M分辨率波段有4个采样,250M波段有16个采样。通过网址进行下载:https://ladsweb.modaps.eosdis.nasa.gov/对于MODIS的波段…

    2022年5月10日
    53
  • 推送 从入门到放弃的文案_百度推送自己不喜欢的内容

    推送 从入门到放弃的文案_百度推送自己不喜欢的内容推送推送简直就是一种轻量级的骚扰方式自从有了推送,各个公司基本上都在使用推送,这确实是一个比较好的提醒方式,Android较iOS强的一个部分,也就是在于Android的Notification。Google教育我们利用好Android的通知模块,做更多友好的交互,可这句话,翻译成中文,不知不觉,就变成了在Notification中推送各种广告,而且仅仅就是一些广告,Notificatio

    2022年9月28日
    0
  • 原地算法矩阵置0_矩阵归一化处理步骤

    原地算法矩阵置0_矩阵归一化处理步骤给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。进阶:一个直观的解决方案是使用 O(mn) 的额外空间,但这并不是一个好的解决方案。一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案。你能想出一个仅使用常量空间的解决方案吗?示例 1:输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2:输入:matrix

    2022年8月8日
    4
  • ubuntu下载pycharm并安装_ubuntu卸载pycharm

    ubuntu下载pycharm并安装_ubuntu卸载pycharm1.下载PyCharm安装包1)进入PyCharm官网,选择Professional专业版,直接点击DOWNLOAD,如图1;2)进入跳转页面,出现提示框,点savefile,开始下载;3)下载完成后,安装包在Downloads文件夹下,如图2;2.安装PyCharm1)解压文件。右键安装包,点击“ExtractHere”,如图3,图4;图三:解压图四:解压后2)先整理文件夹,把pycharm-2018.1.4文件夹放在Downloads根目录,方便找到;3)打开终端,进

    2022年8月26日
    2
  • Assert.assertEquals作用「建议收藏」

    Assert.assertEquals作用「建议收藏」junit.framework包下的Assert提供了多个断言方法.主用于比较测试传递进去的两个参数.Assert.assertEquals();及其重载方法:1.如果两者一致,程序继续往下运行.2.如果两者不一致,中断测试方法,抛出异常信息AssertionFailedError.查看源码,以Assert.assertEquals(intexpecte…

    2022年7月12日
    15
  • java导出pdf模板_java模板导出PDF[通俗易懂]

    java导出pdf模板_java模板导出PDF[通俗易懂]本次完善综合特点:一对一,点对点的给对应的地方写值,比如模板里面放了个name标识,在程序里把“张三”赋给name,那么输出的pdf里面name的地方就变成了张三,准确方便快捷支持中文,可以使用自己下载的字体。支持图片:图片的大小范围可以在模板随意调,生成出来的图片不会超过范围。而且不需要根据坐标去算,程序里面自动计算的。支持多页模板,即使是好几页的模板,只要每个变量对应的范围确定好了,生成出来的…

    2022年5月10日
    40

发表回复

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

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