java 数组转list asList用法
https://www.cnblogs.com/zheyangsan/p/6910476.html
java中数组转list使用Arrays.asList(T... a)方法。 示例: public class App {
public static void main(String[] args) {
List<String> stringA = Arrays.asList("hello", "world","A");
String[] stringArray = {"hello","world","B"};
List<String> stringB = Arrays.asList(stringArray); System.out.println(stringA);
System.out.println(stringB);
}
}
运行结果:
1
2
[hello, world, A]
[hello, world, B]
这个方法使用起来非常方便,简单易懂。但是需要注意以下两点。 一、不能把基本数据类型转化为列表 仔细观察可以发现asList接受的参数是一个泛型的变长参数,而基本数据类型是无法泛型化的,如下所示:
public class App {
public static void main(String[] args) {
int[] intarray = {1, 2, 3, 4, 5};
//List<Integer> list = Arrays.asList(intarray); 编译通不过
List<int[]> list = Arrays.asList(intarray);
System.out.println(list);
}
} output:
[[I@66d3c617]
这是因为把int类型的数组当参数了,所以转换后的列表就只包含一个int[]元素。 解决方案: 要想把基本数据类型的数组转化为其包装类型的list,可以使用guava类库的工具方法,示例如下:
int[] intArray = {1, 2, 3, 4};
List<Integer> list = Ints.asList(intArray); 二、asList方法返回的是数组的一个视图 视图意味着,对这个list的操作都会反映在原数组上,而且这个list是定长的,不支持add、remove等改变长度的方法。
public class App {
public static void main(String[] args) {
int[] intArray = {1, 2, 3, 4};
List<Integer> list = Ints.asList(intArray);
list.set(0, 100);
System.out.println(Arrays.toString(intArray));
list.add(5);
list.remove(0); }
}
output:
[100, 2, 3, 4]
UnsupportedOperationException
UnsupportedOperationException
java中数组转list使用Arrays.asList(T... a)方法。
示例:
1
2
3
4
5
6
7
8
9
10
|
public class App { public static void main(String[] args) { List<String> stringA = Arrays.asList( "hello" , "world" , "A" ); String[] stringArray = { "hello" , "world" , "B" }; List<String> stringB = Arrays.asList(stringArray); System.out.println(stringA); System.out.println(stringB); } } |
运行结果:
1
2
|
[hello, world, A] [hello, world, B] |
这个方法使用起来非常方便,简单易懂。但是需要注意以下两点。
一、不能把基本数据类型转化为列表
仔细观察可以发现asList接受的参数是一个泛型的变长参数,而基本数据类型是无法泛型化的,如下所示:
1
2
3
4
5
6
7
8
9
10
11
|
public class App { public static void main(String[] args) { int [] intarray = { 1 , 2 , 3 , 4 , 5 }; //List<Integer> list = Arrays.asList(intarray); 编译通不过 List< int []> list = Arrays.asList(intarray); System.out.println(list); } } output: [[I @66d3c617 ] |
这是因为把int类型的数组当参数了,所以转换后的列表就只包含一个int[]元素。
解决方案:
要想把基本数据类型的数组转化为其包装类型的list,可以使用guava类库的工具方法,示例如下:
1
2
|
int [] intArray = { 1 , 2 , 3 , 4 }; List<Integer> list = Ints.asList(intArray); |
二、asList方法返回的是数组的一个视图
视图意味着,对这个list的操作都会反映在原数组上,而且这个list是定长的,不支持add、remove等改变长度的方法。
1
2
3
4
5
6
7
8
9
10
11
|
public class App { public static void main(String[] args) { int [] intArray = { 1 , 2 , 3 , 4 }; List<Integer> list = Ints.asList(intArray); list.set( 0 , 100 ); System.out.println(Arrays.toString(intArray)); list.add( 5 ); list.remove( 0 ); } } |
output:
1
2
3
|
[ 100 , 2 , 3 , 4 ] UnsupportedOperationException UnsupportedOperationException |
java 数组转list asList用法的更多相关文章
- JAVA数组的定义及用法
数组是有序数据的集合,数组中的每一个元素具有同样的数组名和下标来唯一地确定数组中的元素. 1. 一维数组 1.1 一维数组的定义 type arrayName[]; type[] arrayName; ...
- Java数组转集合之Arrays.asList()用法
Arrays.asList()用法 使用Arrays.asList()的原因无非是想将数组或一些元素转为集合,而你得到的集合并不一定是你想要的那个集合. 而一开始asList的设计时用于打印数组而设计 ...
- java Arrays.asList用法
java Arrays.asList用法 用途 Arrays是java容器相关操作的工具类,asList方法将Array转换为list,是Array和List之间的桥梁. 注意 Arrays.asLi ...
- Java数组操作方法收集(快速判断某个值在这个数组中)
Java数组操作最高效的方式是循环取值,如果转换成集合那么就会分配内存,效率不如前者,但是方法多,需要在性能调优上去权衡.切记:数组是数组,集合是集合. 下面是收集最常用的数组转成集合的操作方法: i ...
- Java-杂项:Java数组Array和集合List、Set、Map
ylbtech-Java-杂项:Java数组Array和集合List.Set.Map 1.返回顶部 1. 之前一直分不清楚java中的array,list.同时对set,map,list的用法彻底迷糊 ...
- Arrays.asList()用法梳理
Arrays.asList()用法梳理 asList概述 Arrays是java容器相关操作的工具类,asList方法将Array转换为list,是Array和List之间的桥梁. asList本质 ...
- Java 数组最佳指南,快收藏让它吃灰
两年前,我甚至写过一篇文章,吐槽数组在 Java 中挺鸡肋的,因为有 List 谁用数组啊,现在想想那时候的自己好幼稚,好可笑.因为我只看到了表面现象,实际上呢,List 的内部仍然是通过数组实现的, ...
- Java中stream的详细用法
来自于:Java 8 stream的详细用法_旅行者-CSDN博客_java stream 一.概述 Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行 ...
- Java数组技巧攻略
Java数组技巧攻略 0. 声明一个数组(Declare an array) String[] aArray = new String[5]; String[] bArray = {" ...
随机推荐
- java:sso(单点登录(single sign on),jsp文件动静态导入方式,session跨域)
1.jsp文件导入: 2.session跨域: 3.sso(单点登录(single sign on): sso Maven Webapp: LoginController.java: package ...
- markdown-博客编辑
1. 快捷键 2. 基本语法 2.1 字体设置斜体.粗体.删除线 2.2 分级标题 2.3 链接 2.4 分割线 2.5 代码块 2.6 引用 2.7 列表 2.8 表格 3. 常用技巧 3.1 换行 ...
- AI 资源帖
https://github.com/mnielsen/neural-networks-and-deep-learning openCV笔记 https://blog.csdn.net/qq_2689 ...
- SpringBoot 启动失败 Failed to determine a suitable driver class 问题解决方案
Description: Failed to auto-configure a DataSource: 'spring.datasource.url' is not specified and no ...
- 在.Net中使用RedLock实现分布式锁
⒈简介 RedLock 分布式锁算法由 Redis 的作者提出,大部分语言都有对应的实现,查看,RedLock.net 是 RedLock 分布式锁算法的 .NET 版实现,用来解决分布式下的并发问题 ...
- .Net Core 3.0使用Grpc进行远程过程调用
因为.Net Core3.0已经把Grpc作为一等臣民了,作为爱好新技术的我,当然要尝鲜体验一下了,当然感觉是Grpc作为跨语言的产品做的相当好喽,比起Dubbo这种的,优势和劣势还是比较明显的. 我 ...
- JMS消息通信服务
什么是Java消息服务 Java消息服务指的是两个应用程序之间进行异步通信的API,它为标准消息协议和消息服务提供了一组通用接口,包括创建.发送.读取消息等,用于支持JAVA应用程序开发.在J2EE中 ...
- C# 如何判断指定文件是否正被其它程序使用
C# 如何判断指定文件是否正被其它程序使用 起因:项目中发现在操作文件时,系统经常抛出异常,表示文件正被其它程序占用. 需求:为了事先判断,以确认指定的文件是否正被其它程序使用,需要方法进行判断. 思 ...
- @RequestMapping-标准映射和Ant风格的映射
4.@RequestMapping 如果value不以“/”开头,SpringMVC会自动添加“/” 4.1.@RequestMapping映射 4.1.1.标准URL映射 4.1.2.Ant风格的U ...
- hdu 6399 City Development
vjudge 读进来可能会有相同的\(n_i\),不过在相同的\(n_i\)中只有最后一个是有用的,所以其他的要缩起来,缩完后这些\(n\)的数量不会超过19个 可以发现一个城市的答案为所有城市初始权 ...