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. 《AI算法工程师手册》

    本文转载自:http://www.huaxiaozhuan.com/ 这是一份机器学习算法和技能的学习手册,可以作为学习工作的参考,都看一遍应该能收获满满吧. 作者华校专,曾任阿里巴巴资深算法工程师, ...

  2. Restful levels and Hateoas

    RESTful: Rest是一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等 ...

  3. MariaDB xtrabackup物理备份与还原

    xtrabackup物理备份 1.1 安装xtraback 安装依赖: [root@localhost ~]# yum install -y perl-DBD-MySQL perl-DBI perl- ...

  4. JS 页面表格的操作

    var showObj = null;var arr = [ ['编号','姓名','性别','年龄','备注','操作'], ['1','lisi','nan','12','66666'], ['2 ...

  5. P4177 [CEOI2008]order(网络流)最大权闭合子图

    P4177 [CEOI2008]order 如果不能租机器,这就是最大权闭合子图的题: 给定每个点的$val$,并给出限制条件:如果取点$x$,那么必须取$y_1,y_2,y_3......$,满足$ ...

  6. markdown test2

    #home { width: auto; margin: 0 80px 0 0; } mkdir test. #include <msxml6.h> // 含有 MSXML最新版 #inc ...

  7. opencv学习之路(32)、角点检测

    一.角点检测的相关概念 二.Harris角点检测——cornerHarris() 参考网址: http://www.cnblogs.com/ronny/p/4009425.html #include ...

  8. Java调用dll动态库

    最近项目里使用java调用dll动态库,因此研究了一下这方面的东西. 使用的工具包如下 <dependency> <groupId>net.java.dev.jna</g ...

  9. webapi 下载Ftp文件并返回流到浏览器完成文件下载

    ResultModel<HttpResponseMessage> resultModel = new ResultModel<HttpResponseMessage>(Resu ...

  10. 课后作业机票,赌骰子游戏,switch的使用实例

    一,课后第三题机票 package com.bd22; import java.util.Scanner; public class AirTicket { public static void ma ...