数组转集合的方法(注意事项)
1.转换方法
1.遍历的方式,依次添加到集合中。
2.Arrays.asList()方法
3.List.of()方法
4.Collections.addAll(集合,数组)方法,将集合存储到数组中
1.1遍历的方式
这种方式转换成的集合,集合长度可变,可以后续向集合添加数据
int[] i = {1,5,8,7,11,52};//1.遍历的方式List list = new ArrayList();for (int x:i) {list.add(x);}System.out.println(list);
1.2Array.asList()方法
**注意:**以下的书写方式创建的集合,后续是不能添加数据的,因为alList返回的是ArrayList,是Array的内部类,调用add()方法时会报错,可以使用改进方法,这样就可以在集合中添加数据了。可以用List.set()方法修改数据。
int[] i = {1,5,8,7,11,52};List list = Arrays.asList(i);
在集合中添加数据时报的错
改进方法(重新构建一个新的ArrayList)
int[] i = {1,5,8,7,11,52};
List list = new ArrayList<>(Arrays.asList(i));
1.3List.of()
此方法为 Java9新增方法,定义在List接口内,并且为静态方法,故可以由类名直接调用。
集合也是不可变的,在集合添加数据时,报同上的错误。
List list = List.of(1,2,45);
1.4Collections.addALL()
集合是可变的。
int[] b = {1,5,8};
List list = new ArrayList();
Collections.addAll(list,b);
总结:
要想获得一个可变的集合:可以通过List list = new ArrayList<>(Arrays.asList(i))或者Collections.addAll(list,b)或者直接将数组遍历存进集合,这些方法获取的是可变的集合。
直接单纯的使用asList()转换成的集合不能add,但能set。
2.数组和集合的区别
1、数组可以储存基本数据类型和对象,而集合中只能储存对象(可以以包装类形式存储基本数据类型)。
2、数组的长度是固定的,集合长度是可以改变的。
3、定义数组时必须指定数组元素类型,集合默认其中所有元素都是Object。
4、无法直接获取数组实际存储的元素个数,length用来获取数组的长度,但可以通过size()直接获取集合实际存储的元素个数。
5、集合有多种实现方式和不同的适用场合,而不像数组仅采用分配连续的空间方式。
6、集合以接口和类的形式存在,具有封装,继承和多态等类的特性,通过简单的方法和属性调用即可实现各种复杂的操作,大大提高软件的开发效率。
3.List.of()和asList()的区别
1.Arrays.asList返回可变的list,而List.of返回的是不可变的list
2.Arrays.asList支持null,而List.of不行
3.它们的contains方法对null处理不一样
4.Arrays.asList:数组的修改会影响原数组。
数组转集合的方法(注意事项)相关推荐
- JAVA SE学习day_11:集合的相关应用、增强型for循环、foreach方法、数组与集合的相互转换
一.集合的相关应用 1.1 将一个集合加到另一个集合上 boolean addAll(Collection c) 将给定集合中的所有元素添加到当前集合中.调用方法之后只要c1集合发生变化就返回true ...
- Java 数组转成集合List三种方法和(数组、集合List、Set相互转换)
Java 数组转成集合List 三种方法 package com.list;import java.util.ArrayList; import java.util.Arrays; import ja ...
- Java字符串数组转集合方法
数组转集合方法 使用 Arrays.asList(数组) 代码如下: //定义一个字符串String zhuan = "1,2,3,4,5,6,7,8,9";//分割字符串Stri ...
- python 字典 元组 集合 列表 字符串 字节数组 常用的方法总结
字典的方法 函数 说明 D代表字典对象 D.clear() 清空字典 D.pop(key) 移除键,同时返回此键所对应的值 D.copy() 返回字典D的副本,只复制一层(浅拷贝) D.update( ...
- 转载--编写高质量代码:改善Java程序的151个建议(第5章:数组和集合___建议60~64)
阅读目录 建议60:性能考虑,数组是首选 建议61:若有必要,使用变长数组 建议62:警惕数组的浅拷贝 建议63:在明确的场景下,为集合指定初始容量 建议64:多种最值算法,适时选择 噢,它明白了,河 ...
- java json 长度限制_[原创]Java中字符串、数组、集合及JSONArray的长度属性
前言:数组没有length()这个方法,有length的属性.String有有length()这个方法. 1.String字符串 String str = "abcdefg"; s ...
- c#sort升序还是降序_C#中对数组或集合进行升序或降序排序
在.net framework中,数组和集合都实现了用于排序的方法sort(),数组通过调用Array.Sort(数组名)排序,集合通过调用 集合对象.Sort()方法排序. 默认的排序是使用升序排列 ...
- vue 循环遍历list_vue使用map代替Aarry数组循环遍历的方法
需求:根据主键id来找到对应的数组下标 原本的方法是使用for循环遍历该数组,变量 i 就是下标,问题在于,如果有多重for循环,就会导致性能大大下降,数据也容易出错 因此使用map,让数组(原本是l ...
- 将HTMLCollection转换为数组的最有效方法
本文翻译自:Most efficient way to convert an HTMLCollection to an Array 有没有更有效的方法将HTMLCollection转换为数组,除了迭代 ...
最新文章
- Windows下Python 3.6 + VS2017 + Anaconda 解决Unable to find vcvarsall.bat问题
- c语言如何让函数一直执行,C语言如何实现在每天某个特定时间执行某个函数?
- Navicat Monitor v1.7的新功能说明
- 揭秘!如何快速提高网站权重-关键词百度指数叠加
- Lucene知识小总结4:索引的反删除
- python人脸识别门禁_用Python做人脸识别
- oracle po:默认申请分组,PR自动创建PO采购订单:强制按照PR行进行分组
- docker无法连接mysql镜像_关于Docker官方CentOS镜像无法启动mysqld的总结
- 纸白银:交易简便成本低
- UIImage 图像-IOS开发 (实例)
- 模仿SpringMVC的DispatcherServlet 手撸300行代码提炼精华设计思想并保证功能可用(1.0版本)
- HBase之四--(1):Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询...
- Android系统自带样式(@android:style/) (转)
- 10条实用简洁的python代码,拿走即用(内附资料)
- Ubuntu安装tftp服务器
- HTML5七夕情人节表白网页制作【雪花爱心】HTML+CSS+JavaScript 爱心代码 爱心制作 表白代码 告白网页制作
- android 高度百分比,Android 屏幕适配-百分比布局适配
- 吉林大学数据库系统原理期末复习笔记
- 软件------关于spacedesk分屏软件的使用说明(包括下载和具体启动方式)
- 安装Microsoft-project 2016
热门文章
- 小学计算机英语,纳米盒小学英语电脑版
- 排他锁(EXclusive Lock)
- 簇集素蛋白药物有望治疗老年痴呆症
- PMP备考——PMP十五至尊图记忆法——五大过程组记忆法
- Linux解压和压缩
- 苏宁大数据怎么运营_苏宁云商“三驾马车”:大数据、大物流、大金融并行
- warning: 重定向到 https://gitlab.link.cn/video/video_ios_sdk.git/
- 设置TextView中超链接字体颜色、下划线
- 微信小程序python自动化测试_微信小程序UI自动化测试实践:Minium+PageObject
- c语言音标字符,c语言常见英语单词带音标-20210408030123.docx-原创力文档