`
lighter
  • 浏览: 495511 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

读源码之旅 java.util包

阅读更多
很久没有写博客,有点汗颜,很多东西自己开始梳理一些,用博客的方式记录下来,既然自己是一名java开发人员,对jdk的源码也应该有一些研究一下。从网上下载下面的一个图片


对于其他的util类,暂时还没有去研究,只是看了图上所有类的所有方法,看完的感觉就是,核心的类就是四个:HashMap,TreeMap,ArrayList和LinkedList,至于set接口里面的东西基本上都是由HashMap,TreeMap派生而成的,可以重温习一下大学时候学习的hash的构成以及红黑树增删改查,以及怎样构造两种不同的链表结构。

看完有两个疑问:
HashMap里面的hash规则是根据什么算法写成的呢?这一点比较疑惑
    static int hash(Object x) {
        int h = x.hashCode();

        h += ~(h << 9);
        h ^=  (h >>> 14);
        h +=  (h << 4);
        h ^=  (h >>> 10);
        return h;
    }


Collections辅助类里面的
 
  private static final int BINARYSEARCH_THRESHOLD   = 5000;
    private static final int REVERSE_THRESHOLD        =   18;
    private static final int SHUFFLE_THRESHOLD        =    5;
    private static final int FILL_THRESHOLD           =   25;
    private static final int ROTATE_THRESHOLD         =  100;
    private static final int COPY_THRESHOLD           =   10;
    private static final int REPLACEALL_THRESHOLD     =   11;
    private static final int INDEXOFSUBLIST_THRESHOLD =   35;


这一些值是怎样确定的,为什么可以用这一些值就可以确定是否采用循环或迭代方式去取值,难道是通过一次又一次的性能测试后确定的?
  • 大小: 11.3 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics