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. springboot打成war包找不到文件

    项目在eclipse运行是可以的,但是打成war包到线上报错: FileNotFoundException: class path resource [static/apiclient_cert.p1 ...

  2. 用java实现操作两个数据库的数据

    1.首先需要在jdbc的配置文件里面配置两个数据库的连接 数据库1的配置 driverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql://地址:3306/数 ...

  3. c# 将csv文件转换datatable的两种方式。

    第一种: public static DataTable csvdatatable(string path) { DataTable dt = new DataTable(); string conn ...

  4. 原生js开发,无依赖、轻量级的现代浏览器图片懒加载插件,适合在移动端开发使用

    优势 1.原生js开发,不依赖任何框架或库 2.支持将各种宽高不一致的图片,自动剪切成默认图片的宽高 比如说你的默认图片是一张正方形的图片,则各种宽度高度不一样的图片,自动剪切成正方形. 完美解决移动 ...

  5. ElasticSearch(八)Elasticsearch-head 连接不上Elasticsearch的原因和解决方案

    在上篇博文里ElasticSearch(七) Elasticsearch在Centos下搭建可视化服务中已经访问到了可视化界面.然后兴奋地进行了数据提交测试,提交啊,刷新啊,就是看不到数据变化,仔细一 ...

  6. Derivative of Softmax Loss Function

    Derivative of Softmax Loss Function A softmax classifier: \[ p_j = \frac{\exp{o_j}}{\sum_{k}\exp{o_k ...

  7. Configuring VNC Server on Linux

    linux安装oracle时,需用图形化界面安装.所以可采取下列的工具辅助安装 sysvinit (Original Method) systemd (New Method) VNC Clients ...

  8. FL studio里的项目设置介绍

    FL studio作为具有众多音乐功能,能够制作多轨音频录制,排序和混音的一款专业软件,我们可以借助VST主机,灵活的调音台,高级MIDI和ReWire支持,来创建专业品质的各种音乐曲目. 而今天我们 ...

  9. mpvue小程序开发tips(1)

    wx.setStorageSync('vipId',vipId)-----存储   wx.getStorageSync('vipId')-------读取   wx.navigateTo({ url: ...

  10. XSS漏洞学习笔记

    XSS漏洞学习 简介 xss漏洞,英文名为cross site scripting. xss最大的特点就是能注入恶意的代码到用户浏览器的网页上,从而达到劫持用户会话的目的. 说白了就是想尽办法让你加载 ...