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 = {12345};
    //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 = {1234};
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 = {1234};
    List<Integer> list = Ints.asList(intArray);
    list.set(0100);
    System.out.println(Arrays.toString(intArray));
    list.add(5);
    list.remove(0);
 
  }
}

output:

1
2
3
[100234]
UnsupportedOperationException
UnsupportedOperationException

java 数组转list asList用法的更多相关文章

  1. JAVA数组的定义及用法

    数组是有序数据的集合,数组中的每一个元素具有同样的数组名和下标来唯一地确定数组中的元素. 1. 一维数组 1.1 一维数组的定义 type arrayName[]; type[] arrayName; ...

  2. Java数组转集合之Arrays.asList()用法

    Arrays.asList()用法 使用Arrays.asList()的原因无非是想将数组或一些元素转为集合,而你得到的集合并不一定是你想要的那个集合. 而一开始asList的设计时用于打印数组而设计 ...

  3. java Arrays.asList用法

    java Arrays.asList用法 用途 Arrays是java容器相关操作的工具类,asList方法将Array转换为list,是Array和List之间的桥梁. 注意 Arrays.asLi ...

  4. Java数组操作方法收集(快速判断某个值在这个数组中)

    Java数组操作最高效的方式是循环取值,如果转换成集合那么就会分配内存,效率不如前者,但是方法多,需要在性能调优上去权衡.切记:数组是数组,集合是集合. 下面是收集最常用的数组转成集合的操作方法: i ...

  5. Java-杂项:Java数组Array和集合List、Set、Map

    ylbtech-Java-杂项:Java数组Array和集合List.Set.Map 1.返回顶部 1. 之前一直分不清楚java中的array,list.同时对set,map,list的用法彻底迷糊 ...

  6. Arrays.asList()用法梳理

    Arrays.asList()用法梳理 asList概述 Arrays是java容器相关操作的工具类,asList方法将Array转换为list,是Array和List之间的桥梁. asList本质 ...

  7. Java 数组最佳指南,快收藏让它吃灰

    两年前,我甚至写过一篇文章,吐槽数组在 Java 中挺鸡肋的,因为有 List 谁用数组啊,现在想想那时候的自己好幼稚,好可笑.因为我只看到了表面现象,实际上呢,List 的内部仍然是通过数组实现的, ...

  8. Java中stream的详细用法

    来自于:Java 8 stream的详细用法_旅行者-CSDN博客_java stream 一.概述 Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行 ...

  9. Java数组技巧攻略

      Java数组技巧攻略 0.  声明一个数组(Declare an array) String[] aArray = new String[5]; String[] bArray = {" ...

随机推荐

  1. message-digest algorithm 5

    using System; using System.Collections.Generic; using System.Text; using System.Security.Cryptograph ...

  2. Oracle 看出表结构与属性、表空间设计

    1.Oracle 查看表空间 SELECT b.comments as 注释, a.column_name as 列名, a.data_type || '(' || a.data_length || ...

  3. hbase的hue部署和使用

    1.组件版本信息 zookeeper hadoop hbase     hue           zookeeper-3.4.12 hadoop-3.0.3 hbase-2.1.5 4.4.0 2. ...

  4. Luogu P3511 [POI2010]MOS-Bridges

    题目 二分答案然后混合图欧拉回路,因为没有SPJ所以就没写了,怕写了有锅.

  5. SKCTF管理系统

    一开始是一个简洁风的登录界面 康康注册界面 嗯...也是很简洁风呢. 那让我们来查看元素(fn+f12) 没有什么有flag的迹象呢! 那我们试一下注册一个账号 这时候我们已经有解题的线索了: 获得管 ...

  6. Windows下使用SVN版本控制工具

    一.SVN工作原理 SVN(SubVersion)的基本工作思路是这样的:在一台服务器上建立一个源代码库,库里可以存放许多不同项目的源程序,由源代码库管理员统一管理这些源程序. 每个用户在使用源代码库 ...

  7. 编译LNMP部署动态网站环境

    LNMP动态网站部署架构是由一套 Linux+Nginx+MySQL+PHP 组成的动态网站系统解决方案. 以下配置环境为:Linux=RHEL7 --> Nginx=1.13 --> M ...

  8. redis 学习(14)-- HyperLogLog

    HyperLogLog 什么是 HyperLogLog HyperLogLog 是基于 HyperLogLog 算法的一种数据结构,该算法可以在极小空间完成独立数量统计. 在本质上还是字符串类型. 重 ...

  9. SpringBoot上传文件,经过spingCloud-Zuul,中文文件名乱码解决办法

    最近用springCloud整合springboot做分布式服务发现经过zuul之后上传的中文文件名乱码全都变成?????,从而引发异常,单独用springboot却是好的,在网上找到相关资料总结如下 ...

  10. Nginx(高并发)

    Nginx(engine x)高性能和反向代理的web服务器反向代理:保护客户资源,只要是http协议都可以Web服务器:IIS 阿帕奇 NginxNginx可以作为负载均衡(NLB只支持Http)我 ...