数据结构java语言第二版笔记

Integer类简介:

Integer类是基本数据类型int的包装器类,是抽象类Number的子类,位于java.lang包中。
Integer类在对象中包装了一个基本类型int的值,也就是每个Integer对象包含一个int类型的字段。在Integer源码中如下定义:private final int value

增强型for循环

语法:
for(ElementType element:arrayName){};

int[] numArray = { 1, 2, 3, 4, 5, 6 };
for (int i : numArray) {
    System.out.print(i);
}
//结果会是123456

注意事项

增强型for循环不支持遍历时修改
使用增强型for循环时,对遍历的集合需要做null判断,不然可能引发空指针异常。

在这里插入图片描述

Fail-Fast 机制

在ArrayList,LinkedList,HashMap等等的内部实现增,删,改中我们总能看到modCount的身影,modCount字面意思就是修改次数。
我们知道 java.util.HashMap 不是线程安全的,因此如果在使用迭代器的过程中有其他线程修改了map,那么将抛出ConcurrentModificationException,这就是所谓fail-fast策略。这一策略在源码中的实现是通过 modCount 域,modCount 顾名思义就是修改次数,对HashMap 内容的修改都将增加这个值,那么在迭代器初始化过程中会将这个值赋给迭代器的 expectedModCount。在迭代过程中,判断 modCount 跟 expectedModCount 是否相等,如果不相等就表示已经有其他线程修改了 Map:注意到 modCount 声明为 volatile,保证线程之间修改的可见性。
当遍历那些非线程安全的数据结构时,尽量使用迭代器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值