java 数据结构. 源代码阅读
Collections工具类里的
Collections.synchronizedList
public static <T> List<T> synchronizedList(List<T> list) {
return (list instanceof RandomAccess ?
new SynchronizedRandomAccessList<T>(list) :
new SynchronizedList<T>(list));
}
##不过通过推断是否实现RandomAccess接口,而返回不同的SynchronizedList(内部)类,
##RandomAccess foreach较快, iterator较慢,区别不明显(如i5上,本人測试,一个ArrayList,90w个object, foreach出来是6多ms, iterator出来7ms)
##SequenceAccess foreach较慢,iterator较快.区别很明显. (如i5上,本人測试,一个LinkedList,10w个object, foreach出来是200多ms, iterator出来仅4ms)
LinkedList的get(n) 方法. 源代码里写得也有点妙,一不留意 确实是个坑. (这是SequenceAccess 的foreach 慢的原因)
private Entry<E> entry(int index) {
if (index < 0 || index >= size)
throw new IndexOutOfBoundsException("Index: "+index+
", Size: "+size);
Entry<E> e = header;
if (index < (size >> 1)) {
for (int i = 0; i <= index; i++)
e = e.next;
} else {
for (int i = size; i > index; i--)
e = e.previous;
}
return e;
}
最新文章
- 【Java基础】枚举和注解
- 【读书笔记】iOS网络-理解错误源
- wp插件
- 【转载】php中iconv函数使用方法
- Abstract Algebra chapter 7
- Htmlhelper—CheckBox自动生成两个input
- LeetCode33 Search in Rotated Sorted Array
- Javascript继承实现
- 《APUE》读书笔记第十二章-线程控制
- 使用PHP解压文件Unzip
- Memcached基础
- 百度地图Marker优化方案
- [转帖]EXPDP dumpfile和parallel的关系
- Go语言基础之包
- ubuntu终端命令启动matlab方法
- [算法]Collebarative Filtering
- 10、jQuery初识
- C# 客户端篇之实现Restful Client开发(RestSharp帮助类)
- 一个隐蔽的C语言问题反思
- 【Ray Tracing The Next Week 超详解】 光线追踪2-6 Cornell box
热门文章
- (转) 淘淘商城系列——CMS内容管理系统工程搭建
- 06CSS列表
- PHP 下基于 php-amqp 扩展的 RabbitMQ 简单用例 (三) -- Header Exchange
- Beam Search
- [Python3网络爬虫开发实战] 1.4.3-Redis的安装
- mui.openWindow的html5+和web传参的兼容
- C语言学习3
- 02--Activiti初始化表
- table JS合并单元格
- 【BZOJ 1003】[ZJOI2006]物流运输(Dijkstra+DP)