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. Lua for Mac环境搭建

    1⃣️在Mac上安装Lua的运行环境再简单不过了,如果你的Mac Terminal上安装了Homebrew的话,只需要键入`brew install lua`即可. longsl-mac:~ long ...

  2. 大觅网02Day

    docker环境搭建:(注:请先完成上一次的环境搭建) A.部署环境(导入上次系统的时候修改虚拟机的内存) 1.安装系统自带版本Docker:apt-get install docker.io 2.查 ...

  3. Tensorf实战第九课(自编码AutoEncoder)

    本节我们将了解神经网络进行非监督形式的学习,即autoencoder自编码 假设图片经过神经网络后再输出的过程,我们看作是图片先被压缩然后解压的过程.那么在压缩的时候,原有的图片质量被缩减,解压时用信 ...

  4. 蓝鲸-监控 排错思路 - 原理push - bkdata报错 - saas的日志

    1.现象和报错 .[10.253.124.21] paas_agent() paas_agent FATAL Exited too quickly (process log may have deta ...

  5. SpringBoot中使用Websocket进行消息推送

    WebsocketConfig.java @Configuration public class WebSocketConfig { @Bean public ServerEndpointExport ...

  6. 如何不用 transition 和 animation 也能做网页动画

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/BxbQJj 可交互视频教 ...

  7. redis 学习(11)-- redis pipeline

    redis pipeline 什么是流水线(pipeline) 首先来看 redis 执行一次操作所需要的时间: 1 次时间 = 1 次网络时间 + 1次命令时间 执行 n 次就需要: n 次时间 = ...

  8. float详解

    先上一个简单示例,了解一下float的使用 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  9. Git复习(一)之简介、安装、集中式和分布式

    简介 Git是分布式版本控制系统,使用C语言开发的,CVS.SVN是集中式的版本控制系统,集中式的版本控制系统不但速度慢,而且必须联网才能使用. Git是分布式版本控制系统,同一个Git仓库,可以 分 ...

  10. wex5 baasData规则和绑定 学习

    1 在baasData新建一个计算列 2 点击编辑规则,左边选择该计算列, 右边点击计算后面的设置 3 写规则的逻辑 好像不能用if 只能用三目运算符 4 绑定样式和文本的时候 这么用: