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思考

    1.因为例如线性代数之类的数学题较难解决,会耽误我很长时间,所以我希望课程涉及关于数学的库的使用:因为各种考试,例如英语四六级甚至研究生考试各种单词或者关键词都会有使用频率,所以我希望涉及爬虫的应用. ...

  2. Python数据基础--列表、元组、字典、函数

    一.数据结构 列表(List)和元组 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内 ...

  3. Spring的事务

    事务:事务指的是逻辑上的一组操作,这组操作要么都成功,要么都失败. Transaction事务的四大特性ACID: 1.Atomicity原子性 事务的操作要么都成功,要么都不做,只要有一个失败,就会 ...

  4. 通过本质看现象:关于Integer受内部初始化赋值范围限制而出现的有趣现象

    左手代码,右手文章.——朱季谦 这是我的第一篇技术博客,作为一名技术小菜鸟,总体而言显得很拙见,但也算是成长路上的一个小脚印,希望能在以后的日子里,可以对JAVA技术有一个更加深入的思考与认识. 前几 ...

  5. 如何在页面上同时使用 jQuery 和其他框架?

    Query 和其他 JavaScript 框架 正如您已经了解到的,jQuery 使用 $ 符号作为 jQuery 的简写. 如果其他 JavaScript 框架也使用 $ 符号作为简写怎么办? 其他 ...

  6. leetcode 1——两数之和

    问题描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组 ...

  7. iOS项目之iPhoneX遇到的坑

    问题一: 今天升级到Xcode 9.0,里面多了iPhone 8,iPhone 8P,iPhone X三款手机模拟器,而且发现最多可以同时运行五个模拟器.但随之而来的问题也出现了,就是 iPhone ...

  8. oracle SQL性能分析之10053事件

    优化器生成正确执行计划的前提条件是要有正确的统计信息,不准确的统计信息往往会导致错误的执行计划.当通过SQL和基数推断出的执行计划和实际执行计划不同时,就可以借助10053事件.10053事件是用来诊 ...

  9. oracle中新建用户和赋予权限

    1.新建个用户 create user xxxxx(用户名) identified by "密码" alert user 用户名 identified by “新密码” --修改用 ...

  10. 我应该如何在Pycharm中去运行别人的Django项目

    django数据库迁移,本地运行 前言: 从网络上下载好django项目后,在本地用pycharm导入后,并不能运行.此时我们需要添加库和创建数据库. 零:这里是一个基于django写的小项目,可以作 ...