阿里巴巴 Java 开发手册--集合学习笔记
来源:互联网 发布:烈焰战车10级升级数据 编辑:程序博客网 时间:2024/06/05 17:00
一、集合处理
1、【强制】 ArrayList 的 subList 结果不可强转成 ArrayList ,否则会抛出 ClassCastException异常: java . util . RandomAccessSubList cannot be cast to java . util . ArrayList ;
说明: subList 返回的是 ArrayList 的内部类 SubList ,并不是 ArrayList ,而是
ArrayList 的一个视图,对于 SubList 子列表的所有操作最终会反映到原列表上。
2、【强制】使用集合转数组的方法,必须使用集合的 toArray(T[] array) ,传入的是类型完全
一样的数组,大小就是 list . size() 。
反例:直接使用 toArray 无参方法存在问题,此方法返回值只能是 Object[] 类,若强转其它
类型数组将出现 ClassCastException 错误。
正例:List<String> list = new ArrayList<String>(2);list.add("guan");list.add("bao");String[] array = new String[list.size()];array = list.toArray(array);3、【强制】使用工具类 Arrays . asList() 把数组转换成集合时,不能使用其修改集合相关的方
法,它的 add / remove / clear 方法会抛出 UnsupportedOperationException 异常。
说明: asList 的返回对象是一个 Arrays 内部类,并没有实现集合的修改方法。 Arrays . asList
体现的是适配器模式,只是转换接口,后台的数据仍是数组。
String[] str = new String[] { "a", "b" };
List list = Arrays.asList(str);
第一种情况: list.add("c"); 运行时异常。
第二种情况: str[0]= "gujin"; 那么 list.get(0) 也会随之修改。
4、【强制】不要在 foreach 循环里进行元素的 remove / add 操作。 remove 元素请使用 Iterator
方式,如果并发操作,需要对 Iterator 对象加锁。
正例:Iterator<String> it = a.iterator();while(it.hasNext()){String temp = it.next();if(删除元素的条件){it.remove();}}5、【推荐】使用 entrySet 遍历 Map 类集合 KV ,而不是 keySet 方式进行遍历。
正例: values() 返回的是 V 值集合,是一个 list 集合对象 ;keySet() 返回的是 K 值集合,是
一个 Set 集合对象 ;entrySet() 返回的是 K - V 值组合集合。
0 0
- 阿里巴巴 Java 开发手册--集合学习笔记
- 阿里巴巴Java开发手册学习小结4-关于集合处理
- 阿里巴巴java开发手册学习
- 阿里巴巴Java开发手册-集合处理
- 阿里巴巴Java开发手册学习笔记(一)
- 阿里巴巴Java开发手册学习笔记(二)
- 阿里巴巴Java开发手册学习笔记-编程规约
- 阿里巴巴 Java 开发手册(笔记)
- 阿里巴巴Java开发手册要点笔记 (一)
- 《阿里巴巴Java开发手册》阅读笔记
- 阿里巴巴Java开发手册快速学习
- 阿里巴巴Java开发手册快速学习
- 阿里巴巴java开发手册学习记录
- 阿里巴巴Java开发手册学习-常量定义
- 阿里巴巴Java开发手册学习-代码格式
- 阿里巴巴Java开发手册学习-OOP规约
- 阿里巴巴Java开发手册学习-01
- 学习规范--阿里巴巴Java开发手册
- __name__ == '__main__'
- 数据库设计的三大范式
- Java中Comparable和Comparator的使用方法
- SPV中如何利用默克尔树证明某个交易是否存在
- 题目1013:开门人和关门人
- 阿里巴巴 Java 开发手册--集合学习笔记
- kerberos安装
- yii2.0缓存篇之片段缓存
- AEAI DP创建弹窗
- Kettle7 ( Pentaho Data Integration )源码分析 每个step都有一个线程负责运行
- Git基础命令
- Android 内存剖析 之 MAT讲解
- linux解压war包
- Android 开发:(九)Android屏幕适配经验谈