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. requests库

    还没整理,先贴俩链接. https://www.cnblogs.com/lilinwei340/p/6417689.html http://docs.python-requests.org/zh_CN ...

  2. docker运行镜像报错:"write init-p: broken pipe"

    docker: Error response from daemon: OCI runtime create failed: container_linux.go:344: starting cont ...

  3. debugging kubernetes (Delve and Goland)

    1. Build from source cd GOPATH mkdir k8s.io cd k8s.io git clone https://github.com/kubernetes/kubern ...

  4. [dart学习]第二篇:dart变量介绍 (一)

    前言 本文的所有内容均是官方文档的简单翻译和理解,需要查看原文,请登录  https://www.dartlang.org/guides/language/language-tour  阅读, 让我们 ...

  5. base64使用

    public static void main(String args[]) throws Exception { InputStream in = null; byte[] data = null; ...

  6. appium+python3+pycharm踩得坑

    错误: selenium.common.exceptions.WebDriverException: Message: A new session could not be created. (Ori ...

  7. php 随机红包算法

    <?php /** * 红包分配算法 * * example * $coupon = new Coupon(200, 5); * $res = $coupon->handle(); * p ...

  8. docker17.03.2安装

    之前安装过docker 卸载 yum -y remove docker docker-common docker-selinux docker-engine docker-engine-selinux ...

  9. Appium 框架工作流程及原理

    目前Appium框架可以时支持android 和 ios 两个操作系统的App自动化测试,咱们分别对以下两款操作系统的工作流程进行说明. 一.appium-Android工作流 在Android端,a ...

  10. 用Xshell在centos7下安装lnmp服务

    虚拟机已创建好,本机已安装Xshell 一.准备工作:安装常用工具 1.1  yum install -y vim 备注:-y是同意安装过程中的询问,不被询问打断安装 vim:vim是一个类似于Vi的 ...