我们可以通过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. SVN: is scheduled for addition, but is missing

    删除文件夹后点commit提交,但是报错,报错内容如下:提示 "svn: Commit failed (details follow): svn: '/***/xxx.c' is sched ...

  2. 畅通工程续 (SPFA模板Floy模板)

    http://acm.hdu.edu.cn/showproblem.php?pid=1874 SPFA #include <iostream> #include <stdio.h&g ...

  3. PAT 1054 The Dominant Color[简单][运行超时的问题]

    1054 The Dominant Color (20)(20 分) Behind the scenes in the computer's memory, color is always talke ...

  4. 使用 Mirantis Fuel9.0 部署 OpenStack M

    Mirantis Fuel 9 可以实现部署OpenStack M版本web化,管理员只需简单规划就能部署复杂的openstack 组件 安装Fuel9.0 下载官方IOS镜像 https://www ...

  5. testNG入门详解

    TestNG 的注释: @DataProvider @ExpectedExceptions @Factory @Test @Parameters <suite name="Parame ...

  6. Are you looking forward to this 11s Black Stingray

    The Derek Jeter Air Jordan 11 Navy Suede has quietly dropped a number of various colorways over the ...

  7. html09

    1.Jquery的常用方法1)选择器2)操作节点以下的 obj 都是指 jQuery对象 1.操作样式 obj.css() :不加参数是获取节点的css样式 obj.css({"属性&quo ...

  8. 【Java】系统漏洞:关于用户登录后操作的注意事项

    项目背景: SpringMVC + Mybatis  + MySql数据库(javaWeb项目开发) 相关模块:登录,个人详细信息修改,订单详情查询 相关漏洞介绍: 1.登录的验证码:登录的验证码一定 ...

  9. 禁止F12与右键

    实践项目的代码哦,给大家分享下,如何屏蔽右键与F12. 应用网站  www.empiretreasure.vip   与       www.MineBook.vip.可以去逛逛哦. 不多说了,上代码 ...

  10. iostat使用

    iostat -k 查看io的iowait值是否高 iotop 查看具体是哪个组件在占用io. iostat -x -x代表显示一些扩展参数. %util:一秒中有百分之多少的时间用于 I/O 操作, ...