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;

    }

最新文章

  1. 【Java基础】枚举和注解
  2. 【读书笔记】iOS网络-理解错误源
  3. wp插件
  4. 【转载】php中iconv函数使用方法
  5. Abstract Algebra chapter 7
  6. Htmlhelper—CheckBox自动生成两个input
  7. LeetCode33 Search in Rotated Sorted Array
  8. Javascript继承实现
  9. 《APUE》读书笔记第十二章-线程控制
  10. 使用PHP解压文件Unzip
  11. Memcached基础
  12. 百度地图Marker优化方案
  13. [转帖]EXPDP dumpfile和parallel的关系
  14. Go语言基础之包
  15. ubuntu终端命令启动matlab方法
  16. [算法]Collebarative Filtering
  17. 10、jQuery初识
  18. C# 客户端篇之实现Restful Client开发(RestSharp帮助类)
  19. 一个隐蔽的C语言问题反思
  20. 【Ray Tracing The Next Week 超详解】 光线追踪2-6 Cornell box

热门文章

  1. (转) 淘淘商城系列——CMS内容管理系统工程搭建
  2. 06CSS列表
  3. PHP 下基于 php-amqp 扩展的 RabbitMQ 简单用例 (三) -- Header Exchange
  4. Beam Search
  5. [Python3网络爬虫开发实战] 1.4.3-Redis的安装
  6. mui.openWindow的html5+和web传参的兼容
  7. C语言学习3
  8. 02--Activiti初始化表
  9. table JS合并单元格
  10. 【BZOJ 1003】[ZJOI2006]物流运输(Dijkstra+DP)