随手乱记

第一种,构造器(Creator),是指为了创造某个类型的新对象的方法,可能实现为构造函数或静态函数(通常称为工厂类方法);第二种,生产器(Producer),是指能从该类型的旧对象中创建新对象的方法;第三种,观察器(Observer),是指能够获取对象类型并返回不同类型的对象的方法;第四种,变值器(Mutator),是指能够改变对象属性的方法
 

以下关于ADT的RI和AF的说法,不正确的是___

A ADT的Abstract空间(A)中的某个值,在其Rep空间®中可能有多个值与其对应
B 若ADT的某个方法返回一个mutable的对象,并不一定表明该ADT产生了表示泄露
C 若ADT的任意costructor所构造出的object都满足RI、每个mutator方法执行结束后都保持RI为真,那么该ADT的RI就始终为真
D 一个immutable的ADT,其rep可以是mutable的

正确答案:C
答案解析:

针对B选项:通过defensive copy返回mutable对象,其实并未产生表示泄露

针对C选项:如果存在表示泄露,外部client就可以修改内部rep的值,就可能导致RI违反。

针对D选项:of course,只要没有rep exposure就没有问题。

 

论是直接迭代还是for-each循环(for-each内部也是用迭代器实现)语句,对容器迭代的标准方式都是Iterator。但是,即使是使用迭代器,也无法避免在迭代器在迭代期间对容器加锁。这是因为设计同步容器的迭代器时并没有考虑并发修改的问题。

它们表现出的行为是及时失败的,也就是容器在迭代的过程中如果被修改,就会抛出ConcurrentModificationException失败。 

输出ArrayList会调用他的toString方法,而调用toString方法将使用迭代器,可能会抛出ConcurrentModificationException问题。

容器的hashCode,equal,containsAll,removeAll和retainAIl等方法,都会对容器进行迭代,抛出ConcurrentModificationException。


String 字符串常量
StringBuffer 字符串变量(线程安全)
StringBuilder 字符串变量(非线程安全)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值