zoukankan      html  css  js  c++  java
  • 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;
        }






  • 相关阅读:
    40. Combination Sum II
    39. Combination Sum
    找一找
    37. Sudoku Solver
    Activiti 多个并发子流程的应用
    BPMN2新规范与Activiti5
    BPMN这点事-BPMN扩展元素
    JAVA规则引擎 -- Drools
    工作流Activiti5流程变量 任务变量 setVariables 跟 setVariablesLocal区别
    activiti 学习( 三 ) 之 流程启动者
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/7150520.html
Copyright © 2011-2022 走看看