1. 简介

Arrays.asList()方法可以将数组转化为长度固定的列表。

该方法强调了列表的长度是固定的,因此不能使用list的add和remove方法修改list长度。

2. 示例

 import java.util.*;

 public class ListFunc1 {
public static void main(String[] args){ Integer[] array1 = new Integer[]{1,2,3,4};
List<Integer> list1 = Arrays.asList(array1);
list1.set(0,0);
// list1.add(5); // (1)
// list1.remove(2); // (2)
System.out.println(list1); /*
* ArrayList(Collection<? extends E> c)
* 按照集合的迭代器返回的顺序构造一个包含指定集合元素的列表
* */
Integer[] array2 = new Integer[]{1,2,3,4};
List<Integer> list2 = new ArrayList<>(Arrays.asList(array2)); // (3)
list2.set(0,0);
list2.add(5);
list2.remove(2);
System.out.println(list2); // [1, 2, 4, 5]
}
}

示例说明如下:

(1)使用add()方法时将会抛出异常:Exception in thread "main" java.lang.UnsupportedOperationException;

源码如下,可以发现使用add方法时将会直接抛出异常。

  public boolean add(E e) {
add(size(), e);
return true;
} public void add(int index, E element) {
throw new UnsupportedOperationException();
}

(2)使用remove()方法时将会抛出异常:Exception in thread "main" java.lang.UnsupportedOperationException;

源码如下,可以发现使用remove方法时将会直接抛出异常。

 public E remove(int index) {
throw new UnsupportedOperationException();
}

(3)如果想要修改由数组转换而成的列表,可以使用ArrayList(Collection<? extends E> c)构造器,

新建一个列表即可,构造器的参数为集合。

 import java.util.*;

 public class Main1 {
public static void main(String[] args){ /* Arrays.asList()构建列表
* 列表长度不可变,即不可以add和remove
* */
int[] intArray1 = new int[]{5, 7};
List<int[]> intList1 = Arrays.asList(intArray1);
System.out.println(intList1); // [[I@1540e19d] Integer[] intArray2 = new Integer[]{5, 7};
List<Integer> intList2 = Arrays.asList(intArray2);
// intList2.add(3); // error
System.out.println(intList2); // [5, 7] /* 使用ArrayList(Collection<? extends E> c)构建列表
* 长度可变,即可以add和remove
* */
int[] intArray = new int[]{2, 4};
List<int[]> intList = new ArrayList<>(Arrays.asList(intArray));
System.out.println(intList); // [[I@1540e19d] Integer[] integerArray = new Integer[]{1,3};
List<Integer> integerList = new ArrayList<>(Arrays.asList(integerArray));
integerList.add(5); // success
System.out.println(integerList); // [1, 3, 5]
}
}

!!!

java Arrays.asList方法注意事项的更多相关文章

  1. java——Arrays.asList()方法

    Arrays.asList() 是将数组作为列表 问题来源于: public class Test { public static void main(String[] args) { int[] a ...

  2. Java -- Arrays.asList()方法

    Arrays.asList() 是将数组作为列表 问题来源于: public class Test { public static void main(String[] args) { int[] a ...

  3. Arrays.asList()方法注意事项

    1.Arrays.asList()底层数组作为物理层实现.所以返回的List大小不可更改,即不可以做add().remove()操作,并且对List所做的任何变动都会致使原数组发生变动. public ...

  4. java Arrays.asList 问题

    1.问题 public static void asList() { System.out.println(Arrays.asList(new String[] { "a", &q ...

  5. java Arrays.asList用法

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

  6. 为什么阿里规约手册要求谨慎使用Arrays.asList方法

    前言 在开发中,有时候会碰到把多个参数,或者说把数组转成List的需求,通常我们会使用 Arrays.asList()方法.但是该方法在使用的过程中,稍有不慎就会出现严重的异常.有如下代码: @Tes ...

  7. Arrays.asList()方法的限制

    Arrays.asList()方法的限制是他对所产生的List类型做出了最理想的假设 package example; import java.util.Arrays; import java.uti ...

  8. 工具类Arrays.asList()方法把数组转换成集合

    工具类Arrays.asList()方法把数组转换成集合 不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportedOperationException() 问 ...

  9. Java中关于Arrays.asList方法的深入学习与理解

    Java的标准库中在java.util包下提供了很多实用的工具类,如:Arrays,Collections等工具类都提供了一些比较实用的方法.在实际的开发使用中,我们经常需要使用这样的需求:将一个数组 ...

随机推荐

  1. python学习笔记之socket(第七天)

         参考文档:              1.金角大王博客:http://www.cnblogs.com/alex3714/articles/5227251.html               ...

  2. nginx ../logs/nginx.pid" failed (2: No such file or directory)

    [1]nginx.pid相关 (1)可能出现两种场景: 1.1 nginx.pid文件不存在 发生现象:nginx: [error] open() "/usr/local/lib/ubcsr ...

  3. ubuntu+anaconda+mxnet环境配置

    为了insightface和mxnet较劲的一天 mxnet环境: 官网下载pyhton2.7版本的anaconda,随便找个安装教程 sh Anacondaxxxx.sh #一路默认即可,第二个回车 ...

  4. Java面试题整理---网络篇

    1.BIO.AIO和NIO的概念及区别? 2.什么是长连接和短连接? 3.http1.0.http1.1和http2.0的区别? 4.https和http的区别?   5.https的工作原理?   ...

  5. Mac 下 实现终端跳转 服务器 不用输入密码

    首先需要安装 expect 安装 expect  需要 tcl 依赖 第一步 下载tcl http://www.tcl.tk/software/tcltk/downloadnow84.tml 将下载好 ...

  6. 小程序如何封装自定义组件(Toast)

    1.创建和pages 同级的component目录新建一个myToast目录 例如: 2.myToast.wxml文件内容: <!-- 自定义toast组件 --> <!-- nam ...

  7. 对于react-redux的理解

    一.redux与组件 React-Redux提供connect方法,用于从UI组件生成容器组件 二.react-redux的基本使用 1.引入 import {Provider} from " ...

  8. django自定义simple_tag和filter

    1.自定义simple_tag: 1).在app目录名下创建templatetags目录,并新建__init__.py文件. 2).在templatetags目录下创建任意名字的py文件,例如rema ...

  9. MySQL ERROR 1698 (28000): Access denied for user 'root'@'localhost'

    今天在安装MySQL的过程中竟然没有让我输入密码,登录的时候也不需要密码就能进入,这让我很困惑. 进了数据库就设置密码,用了各种方式都不行. 虽然我这数据库没啥东西但也不能没有密码就裸奔啊,有点丢人是 ...

  10. LeetCode Weekly Contest 117

    已经正式在实习了,好久都没有刷题了(应该有半年了吧),感觉还是不能把思维锻炼落下,所以决定每周末刷一次LeetCode. 这是第一周(菜的真实,只做了两题,还有半小时不想看了,冷~). 第一题: 96 ...