Snowdream
I'm awake but my world is half asleep
posts - 398, comments - 234, trackbacks - 0, articles - 7
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
JDK1.5 源码阅读笔记 (2)
Posted on 2007-05-04 13:11
ZelluX
阅读(433)
评论(0)
编辑
收藏
所属分类:
OOP
java.util.AbstractCollection
感谢BBS上的outerheaven解答了add(E o)方法的问题。在把add方法写成抛出异常不是为了防止子类向上转型时错误地调用AbstractCollection的这个方法,而是为了让不支持add方法的子类继承,比如EnumSet类,它的元素是在创建时就决定的,不支持add方法。
java.util.AbstractList
1) 包含了
private class Itr implements Iterator<E>
private class ListItr extends Itr implements ListIterator<E>
而ListIterator又是继承Iterator接口的。
分成两个类写是不是为了使代码清晰呢?
2) 使用了modCount变量检查并发操作时容易发生的问题。
Iterator中有一个expectedModCount变量,每次通过Iterator操作时,都会调用checkForComodification()方法,检查expectedModCount是否和AbstractList的modCount相等,如果不同则抛出ConcurrentModificationException。
3) subList方法和SubList类和视图view有关(是不是Observer模式的应用呢?),先不看了
4) equals方法中最后那个判断语句有点新颖(或者我土了)
public
boolean
equals(Object o)
{
if
(o
==
this
)
return
true
;
if
(
!
(o
instanceof
List))
return
false
;
ListIterator
<
E
>
e1
=
listIterator();
ListIterator e2
=
((List) o).listIterator();
while
(e1.hasNext()
&&
e2.hasNext())
{
E o1
=
e1.next();
Object o2
=
e2.next();
if
(
!
(o1
==
null
?
o2
==
null
: o1.equals(o2)))
return
false
;
}
return
!
(e1.hasNext()
||
e2.hasNext());
}
}
5) hashCode的生成:
hashCode(e1, e2, ..., en) = Sigma(hashCode(ei) * 32^i)
没有考虑溢出之类的情况,因为只是个hashCode嘛
IT新闻
新用户注册
刷新评论列表
标题
姓名
主页
验证码
*
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
该文被作者在 2007-07-27 10:49 编辑过
相关文章:
为什么Python中的self必须保留?
Python中inner function的binding处理
C# From a Java Programmer's Perspective
Singleton模式与双检测锁定(DCL)
C# 学习笔记 (1)
Java Puzzler - 数值处理中容易犯的错误
Java3D 入门笔记 (1)
Java 的类库真是方便啊
Java泛型中的? super T语法
Project3 成功转移到Ubuntu
相关链接:
网站导航:
博客园
BlogJava
博客生活
IT博客网
C++博客
PHP博客
博客园社区
管理博客
教师博客
天文博客
汽车博客
足球博客
股票博客
电子博客
管理
Powered by:
BlogJava
Copyright © ZelluX
日历
<
2007年5月
>
日
一
二
三
四
五
六
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
公告
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(10)
给我留言
查看公开留言
查看私人留言
随笔分类
(398)
Algorithm(57)
C/C++(40)
Courses(21)
Economics(2)
Laboratory(26)
Linux(46)
Mathematics(12)
OOP(89)
Scripting(19)
Security(3)
System(29)
Web(10)
书、电影、音乐(11)
其他(14)
点滴(19)
随笔档案
(386)
2008年11月 (1)
2008年10月 (9)
2008年9月 (1)
2008年7月 (2)
2008年6月 (6)
2008年5月 (13)
2008年4月 (19)
2008年3月 (8)
2008年2月 (33)
2008年1月 (19)
2007年12月 (10)
2007年11月 (14)
2007年10月 (24)
2007年9月 (18)
2007年8月 (28)
2007年7月 (33)
2007年6月 (26)
2007年5月 (30)
2007年4月 (92)
文章档案
(7)
2007年7月 (2)
2007年5月 (4)
2007年4月 (1)
相册
Illustration
15ers
jonathan的BLOG
Right There...
宙斯鱼的小鱼缸
小鲍的世界
简单幸福
逃遁的Persephone
阿缪尔的锦瑟
风之语的BLOG
友情链接
(04CS) ljh
(05CS) 小菜虎的窝
(06CS) FreePeter
(06SS) Overboming
(06SS) Sherry
(06SS) 十指飞扬
(06SS) 银色子弹
luohandsome的专栏
平淡是真——啃啃不老阁
收藏夹
[ADN.cn]Library
Debian学习笔记
Dictionary of Algorithms and Data Structures
Gollum
Lex&Yacc
Max On Java
techInterview Discussion
核桃仁
程序员面试题精选100题
铁手
搜索
积分与排名
积分 - 119336
排名 - 71
最新随笔
1. 为什么Python中的self必须保留?
2. Most Influential PLDI Paper Award
3. [zz]Zotero与Endnote的互相导入
4. Python中inner function的binding处理
5. Erlang的Hello World: 一个计数程序
6. Xen Notes [1]
7. Erlang的GeSHi语法高亮文件
8. 32款最好的编程字体
9. 几个并行计算、内核相关的链接
10. OS Lab 零散记录
最新评论
1. re: Windows - QQ、网页Flash视频无声音的解决方法
那个字符串我有的啊,还是没用
--宝
2. re: Windows - QQ、网页Flash视频无声音的解决方法[未登录]
水平高!!谢谢!!
之前搞了N次,化了N的时间。。。
搞了几个月
今天终于搞好了,谢谢!!
--竹笋
3. re: Windows - QQ、网页Flash视频无声音的解决方法[未登录]
水平高!!谢谢!!
之前搞了N次,化了N的时间。。。
几个月的同样问题终于解决!
--竹笋
4. re: Xen Notes [1]
@rubisva
就是加一行PAE=yes呀
--ZelluX
5. re: Xen Notes [1]
评论内容较长,点击标题查看
--rubisva
阅读排行榜
1. memcpy函数代码分析(2925)
2. 水源上看到的腾讯笔试题(2628)
3. [zz]vim+ctags+taglist插件安装使用(2130)
4. 《编程之美》上的一道题目的讨论(2070)
5. 最近读的两篇paper(1850)
评论排行榜
1. C# 学习笔记 (1)(14)
2. URAL 1011(10)
3. 《编程之美》上的一道题目的讨论(8)
4. Singleton模式与双检测锁定(DCL)(7)
5. 肆意一把(7)