我们可以通过Arrays.asList() 产生一个List,但是要记住,我们通过Arrays.asList产生的list是基于一个固定大小的数组的, 仅支持那些不会改变数组大小的操作。所以我们在使用时要时刻记住,以免出现不可预料的错误。

如果我们想要得到一个可以操作的List可以通过将Arrays.asList获得的list作为构造器的参数传进ArrayList中,或者通过使用addAll方法添加进去,即可。

示例:

import java.util.AbstractList;
import java.util.AbstractMap;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set; public class Test{ public static void test(String msg, List<String> list){
Collection<String> c = list;
Collection<String> sublist = list.subList(1, 3);
Collection<String> c2 = new ArrayList<String>(sublist);
System.out.println("------" + msg + "--------");
try{
c.removeAll(c2);
}catch(Exception e) {
System.out.println("removeAll : " + e);
}
try{
c.retainAll(c2);
}catch(Exception e) {
System.out.println("retainAll : " + e);
}
try{
c.clear();
}catch(Exception e) {
System.out.println("clear : " + e);
}
try{
c.add("XXX");
}catch(Exception e) {
System.out.println("add : " + e);
}
try{
c.addAll(c2);
}catch(Exception e) {
System.out.println("addAll : " + e);
}
try{
c.remove("X");
}catch(Exception e) {
System.out.println("remove : " + e);
} try{
list.set(0, "XYZ");
}catch(Exception e) {
System.out.println("list.set : " + e);
}
}
public static void main(String[] args) {
List<String> list = Arrays.asList("A B C D E F G H B I HIK HKI GG".split(" "));
test("Modifiable1", new ArrayList<String>(list)); List<String> list2 = new ArrayList<String>();
list2.addAll(list);
test("Modifiable2", list2); Collections.addAll(list2, "A B C D E F G H B I HIK HKI GG".split(" "));
test("Modifiable3", list2); test("Arrays.asList", list);
test("unmodifiableList()", Collections.unmodifiableList(list));
} }
输出:
------Modifiable1--------
------Modifiable2--------
------Modifiable3--------
------Arrays.asList--------
removeAll : java.lang.UnsupportedOperationException
retainAll : java.lang.UnsupportedOperationException
clear : java.lang.UnsupportedOperationException
add : java.lang.UnsupportedOperationException
addAll : java.lang.UnsupportedOperationException
------unmodifiableList()--------
removeAll : java.lang.UnsupportedOperationException
retainAll : java.lang.UnsupportedOperationException
clear : java.lang.UnsupportedOperationException
add : java.lang.UnsupportedOperationException
addAll : java.lang.UnsupportedOperationException
remove : java.lang.UnsupportedOperationException
list.set : java.lang.UnsupportedOperationException

  

Java中关于Arrays.asList()的操作的更多相关文章

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

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

  2. Java从入门到精通——数据库篇之JAVA中的对Oracle数据库操作

    在Java中对Oracle数据库的操作分为两种:一.查询.二.非查询. 下面是我对其进行总结: 一.查询数据 /** * 根据用户代码查询 * @param userId * @return 如果存在 ...

  3. 第69节:Java中数据库的多表操作

    第69节:Java中数据库的多表操作 前言 学习数据库的多表操作,去电商行业做项目吧!!! 达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文 ...

  4. Java - 一道关于Arrays.asList的题目

    题目 有这样一道有趣的题目: final int[] test = new int[]{1,2,3,4}; final Integer[] test2 = new Integer[]{1,2,3,4} ...

  5. 为什么Java里的Arrays.asList不能用add和remove方法?

    在平时的开发过程中,我们知道能够将一个Array的对象转化为List.这种操作,我们仅仅要採用Arrays.asList这种方法即可了.笔者前段时间一直用这种方法,有一天,我发现通过Arrays.as ...

  6. JAVA中数组Arrays类的常见用法

    import java.util.Arrays; int[] array1={7,8,3,2,12,6,5,4}; 1.  //克隆clone  int[] array2=array1.clone() ...

  7. java中的Arrays这个工具类你真的会用吗

    Java源码系列三-工具类Arrays ​ 今天分享java的源码的第三弹,Arrays这个工具类的源码.因为近期在复习数据结构,了解到Arrays里面的排序算法和二分查找等的实现,收益匪浅,决定研读 ...

  8. 【Java 基础】Arrays.asList、ArrayList的subList注意事项

    1. 使用Arrays.asList的注意事项 1.1 可能会踩的坑 先来看下Arrays.asList的使用: List<Integer> statusList = Arrays.asL ...

  9. java中文件的I/O操作

    java中文件的读写操作 (一) (1)java中文件的字节转成字符读操作 FileInputStream fStream = new FileInputStream("test.txt&q ...

随机推荐

  1. Selenium定位元素-Xpath的使用方法

    工具 Xpath的练习建议下载火狐浏览器,下载插件Firebug.Firepath. 由于最新版火狐不支持Firebug等扩展工具了,所以需要下载49版以下的版本安装https://ftp.mozil ...

  2. soapUI-Conditional Goto

    1.1.1  Conditional Goto 1.1.1.1 概述 - Conditional Goto Conditional Goto TestStep包含任意数量的XPath/JSONPath ...

  3. [LeetCode] 836. Rectangle Overlap_Easy

    A rectangle is represented as a list [x1, y1, x2, y2], where (x1, y1) are the coordinates of its bot ...

  4. glob.glob()、os.path.split()函数、global和nonlocal关键字

    1. glob.glob() glob模块是Python最简单的模块之一, 内容非常少, 用它可以查找符合特定规则的文件路径名, 查找文件时只会用到三个匹配符: * :匹配0个或多个字符 ? : 匹配 ...

  5. python中的re模块中的向后引用和零宽断言

    1.后向引用 pattern = re.compile(r"(\w+)")#['hello', 'go', 'go', 'hello'] # pattern = re.compil ...

  6. H2O.ai初步使用

    1.官网下载最新稳定版,https://www.h2o.ai/download/ ,如果点击下载无反应,请使用ie浏览器 2.解压h2o-3.18.0.10.zip到目录h2o-3.18.0.10 3 ...

  7. BinarySearch

    今天看代码,看到这么一段,开始没有看明白,记录下来备忘 foreach (FinancialReport r3 in addAorList)            {                i ...

  8. 《Bilateral Multi-Perspective Matching for Natural Language Sentences》(句子匹配)

    问题: Natural language sentence matching (NLSM),自然语言句子匹配,是指比较两个句子并判断句子间关系,是许多任务的一项基本技术.针对NLSM任务,目前有两种流 ...

  9. SSRS创建复合型图表

    SSRS创建复合型图表 1.添加报表数据对应代码: if object_id('tb') is not null drop table tb; go CREATE TABLE tb(yearid in ...

  10. Ubuntu16.04 +cuda8.0+cudnn+caffe+theano+tensorflow配置明细

      本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www ...