从头认识java-15.2 Collection的经常用法(2)-注意点
上一章节我们讲述了Collection的经常用法。还有之前的章节我们介绍了Collection的addAll方法,这一章节我们介绍一下它的注意点。
注意点就是,在经常用法里面,基本都是可选操作。
什么是可选操作?
可惜操作的方法不是为全部的实现而设定的。而仅仅是为某一类的实现而设定的。
比如:
package com.ray.ch15; import java.util.Arrays;
import java.util.Collection;
import java.util.List; public class Test {
public static void test(List<String> list, String msg) {
System.out.println("---------" + msg + "--------");
List<String> subList = list.subList(1, 4);
Collection<String> collection = list;
try {
collection.retainAll(subList);
} catch (Exception e) {
System.out.println("retainAll:" + e);
}
} public static void main(String[] args) {
List<String> list = Arrays.asList("1", "2", "3", "4", "5", "6");
test(list, "start1");
}
}
输出:
---------start1--------
retainAll:java.lang.UnsupportedOperationException
为什么上面会抛异常呢?
由于Arrays.asList这种方法最底层的数据结构是一个数组,数组在java里面是不可改动的。当retainAll这种方法想改动数组里面的数据结构时,它是不被同意的。
假设我们上面输出多一点异常信息,我们将会定位到AbstractList的remove方法。当调用它的时候。将会抛不被支持的异常。
public E remove(int index) {
throw new UnsupportedOperationException();
}
总结:这一章节主要介绍了Collection的经常用法的可选操作。
这一章节就到这里,谢谢。
-----------------------------------
从头认识java-15.2 Collection的经常用法(2)-注意点的更多相关文章
- 【转】java 容器类使用 Collection,Map,HashMap,hashTable,TreeMap,List,Vector,ArrayList的区别
原文网址:http://www.360doc.com/content/15/0427/22/1709014_466468021.shtml java 容器类使用 Collection,Map,Hash ...
- Java集合框架Collection
转自:http://www.cdtarena.com/javapx/201306/8891.html [plain] view plaincopyprint?01.在 Java2中,有一套设计优良的接 ...
- java中集合Collection转list对象
参考:java中集合Collection转list对象 首先我的需求是获取到购物车列表,购物车列表是一个Map对象,构造方法获取购物项,这里购物项是Collection对象 // 购物项集合,K商品I ...
- Java基础学习-Collection体系结构和迭代测试
package Collection; import java.util.ArrayList; import java.util.Collection; import java.util.Iterat ...
- Java基础之Collection与Collections浅析
Java基础之Collection与Collections浅析 一.前言: 位于Java.util包下的Collection与Collections都是Java中重要的工具类,它们都是Java集合框架 ...
- java Iterator Iterable Collection AbstractCollection Map关系
java.lang Interface Iterable<T> 实现该接口就可以使用for-each循环. java.util Interface Iterator<E> ...
- JDK 15 JAVA 15的新特性展望
目录 JEP 371: Hidden Classes JEP 372: 删除 Nashorn JavaScript Engine JEP 377: 新的垃圾回收器ZGC正式上线了 JEP 378: T ...
- Java 15 正式发布, 14 个新特性,刷新你的认知!!
JDK 15 2020/09/15 如期而至! 这个时间牛逼啊,和苹果发布会同天? OracleJDK 15 发布地址: https://www.oracle.com/java/technologie ...
- linux(centos8):安装java jdk 15 (java 15)
一,下载jdk15 官方网站: https://www.oracle.com/java/ 下载页面: https://www.oracle.com/cn/java/technologies/javas ...
随机推荐
- Html常用标签及全称
<!-- 块标签 divsion --><div></div> <!--br 换行 break--> <br /> <!--分割 ...
- win32窗口映射(部分)
先理解一下“窗口”与“视区”的概念.“窗口”是逻辑坐标下的矩形区域,“视区”是设备坐标系下的区域.根据“窗口”和“视区”的大小可以确定x方向和y方向的比例因子. 例子如下: VOID OnPaint( ...
- Microsoft SQL Server学习(一)--基本概念
数据库的分类 关系型数据库 非关系型数据库 数据库的发展 数据都是以文件的形式存储在硬盘上FATFAT32NTFS LinuxEXT 数据库设计流程 文件系统缺陷 数据库的专业术语 数据库引擎服务 E ...
- PHP 之base16加密解密封装
/** * @Description: base16加密 * @Author: Yang * @param $data * @return string */ function base16_enco ...
- sql的四种连接方式
1.内联接.(典型的联接运算,使用像 = 或 <> 之类的比较运算符).包括相等联接和自然联接. 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students ...
- Python 递归、匿名函数、map和filter day4
一.递归---函数自己调用自己 1.一个错误递归的例子: count=0 def hello(): global count count+=1 print("count %s"%c ...
- vue项目的路由配置
方案一.在生成项目的时候就选择安装路由; 这个地方选择y即可; 生成项目之后在src目录下会有router文件夹,里面有index.js,并且里面已经存在一个helloWorld页面了,可以直接模仿着 ...
- Python - 模块(二)
目录 Python - 模块(二) re re下面的方法 logging os Python - 模块(二) re re模块提供了正则表达式的相关操作 主要字符介绍: . 通配符,除了换行符之外的任意 ...
- python--(协程 和 I/O多路复用)
python--(协程 和 I/O多路复用) 一.协程 1. >>>单线程下实现并发, 最大化线程的效率, 检测 IO 并自动切换,程序级别的任务切换, 之前多进程多线程都是系统级别 ...
- ansible - playbook(剧组)
目录 ansible - playbook(剧组) 常用命令 五种传参方式 常用元素详解 tags handlers template when 循环 嵌套循环 ansible - playbook( ...