java 数组转化为arraylist_在Java中怎样把数组转换为ArrayList?
本文分析了Stack Overflow上最热门的的一个问题的答案,提问者获得了很多声望点,使得他得到了在Stack Overflow上做很多事情的权限。这跟我没什么关系,我们还是先看看这个问题吧。
这个问题是”在Java中怎样把数组转换为ArrayList?”
Element[] array = {new Element(1),new Element(2),new Element(3)};
1.最流行也是被最多人接受的答案
最普遍也是被最多人接受的答案如下:
ArrayList arrayList = new ArrayList(Arrays.asList(array));
首先,我们来看下ArrayList的构造方法的文档。
ArrayList(Collection < ? extends E > c) : 构造一个包含特定容器的元素的列表,并且根据容器迭代器的顺序返回。
所以构造方法所做的事情如下:
1.将容器c转换为一个数组
2.将数组拷贝到ArrayList中称为”elementData”的数组中
ArrayList的构造方法的源码如下:
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.另外一个流行的答案
另外一个流行的答案是:
List list = Arrays.asList(array);
这不是最好的,因为asList()返回的列表的大小是固定的。事实上,返回的列表不是java.util.ArrayList,而是定义在java.util.Arrays中一个私有静态类。我们知道ArrayList的实现本质上是一个数组,而asList()返回的列表是由原始数组支持的固定大小的列表。这种情况下,如果添加或删除列表中的元素,程序会抛出异常UnsupportedOperationException。
list.add(new Element(4));
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.又一个解决方案
这个解决方案由Otto提供
Element[] array = {new Element(1), new Element(2)};
List list = new ArrayList(array.length);
Collections.addAll(list, array);
4.该问题的表明的东西
这个问题不难,但却很有趣。每个Java程序员都知道ArrayList,但却很容易犯下这样的错误。我想这就是这个问题很火的原因吧。如果是一个特定领域的Java库的相似的问题,就远不会这样火热了。
这个问题有好多答案提供了相同的解决方案,对于StackOverflow的其他问题也是这样。我猜想当人们想要回答一个问题时,是不会管别人说了什么的。
java 数组转化为arraylist_在Java中怎样把数组转换为ArrayList?相关推荐
- java数组和链表的区别_java中链表和数组的区别?
综述:数组是线性结构,可以直接索引,即要去第i个元素,a[i]即可.链表也是线性结构,要取第i个元素,只需用指针往后遍历i次就可.貌似链表比数组还要麻烦些,而且效率低些. 想到这些相同处中的一些细微的 ...
- java字符串转json取集合_Java中Json字符串直接转换为对象的方法(包括多层List集合)...
使用到的类:net.sf.json.JSONObject 使用JSON时,除了要导入JSON网站上面下载的json-lib-2.2-jdk15.jar包之外,还必须有其它几个依赖包:commons-b ...
- sql server 数组_如何在SQL Server中实现类似数组的功能
sql server 数组 介绍 (Introduction) I was training some Oracle DBAs in T-SQL and they asked me how to cr ...
- python数组相减_对Python 中矩阵或者数组相减的法则详解
对Python 中矩阵或者数组相减的法则详解 最近在做编程练习,发现有些结果的值与答案相差较大,通过分析比较得出结论,大概过程如下: 定义了一个计算损失的函数: def error(yhat,labe ...
- mysql 关联数组_在PHP / MySQL查询中创建关联数组
我的profileTable中有一个名为"Associations"的列-我正在尝试查询与关联相关的配置文件. $sql = mysqli_query($con,"SEL ...
- python中多维数组的计算_计算python中多维数组中数组的出现次数
可以将这些行转换为1D数组,使用元素作为二维索引,并使用^{}.然后,使用^{}给我们每个唯一行的开始位置,并且还有一个可选参数return_counts来给我们计数.因此,实现将如下所示-def u ...
- python数组对应元素相乘_python – 将一个数组的每一行与numpy中另一个数组的每个元素相乘...
使用 broadcasting – A[:,None,:]*B[:,:,None] 由于np.einsum也支持广播,你也可以使用它(感谢@ajcr建议这个简洁的版本) – np.einsum('ij ...
- java数组初始化为 1_Java Class 1.1数组初始化
1.1.1Java数组是静态的 Java语言是静态语言,所以Java数组是静态的,当数组完成初始化后该数组的长度是不可变的.(初始化就是为数组元素分配存储空间并制定每个元素的初始值) 数组初始化有两种 ...
- java 在一个类中去调用另一个类中的对象数组
比如说,我在A类中创建了一个对象数组.想在B类中去使用这个A类中的数组.那么有两种方式 以下创建的数组都是类类型的数组 我觉得类类型数组的好处可以给数组中的每一个元素创建多个标签.并且可以对多个标签进 ...
最新文章
- 【笔记】分离字符串中的数字、字母和汉字
- Android学习笔记——Menu(二)
- Harbor升级和数据库迁移手册
- ThinkPHP的增、删、改、查
- linux,shell中if else if的写法,if elif
- xhtml与html的区别开头,XHTML与HTML的差别
- oracle、sqlserver创建表、删除表、创建索引的sql
- oracle,sqlserver,mysql区别
- php mysql追踪器_zf框架的数据库追踪器使用示例
- Nacos概述,下载与安装,初始化配置,服务注册应用,RestTemplate,Feign
- 基于SSM的景区旅游管理系统
- pdf如何转换成word文档格式
- 类EMD的“信号分解方法”及MATLAB实现(第一篇)——EEMD
- 程序猿的自救 从零备考NSCA/CSCS 3 运动与训练的能量学
- html导出excel表头多了一行空行,excel中有时候表格下面有很多空行,下拉条滚动一点就过了很多行,怎么取消掉多余的行啊?(excel表头每页都显示)...
- 02.微软官方启动U盘装机教程
- 下列关于java集合说法错误的是_下列说法错误的是A.集合类都位于java.util包下
- Hdoj 3486 Interviewer(二分加RMQ)
- Android Studio键盘快捷键
- Remind myself
热门文章
- [转载]JAVA操作符
- SQL NOTE--VIEW
- HTTP头域列表与解释 之 request篇
- UVA 10803 - Thunder Mountain
- 成功解决 AttributeError: module ‘neat’ has no attribute ‘Config’解决方式
- Android-JNI开发系列《五》局部引用全局引用全局弱引用缓存策略
- Ubuntu18.04更换清华源
- 高通driver模块编译方法
- android7.0 Jack编译器报错解决
- android MemeoryFile和Parcel操作文件描述符fd