zoukankan      html  css  js  c++  java
  • 源码之Java集合

    No1:

    ArrayList的扩容策略是,新容量扩大为原来的1.5倍

    ArrayList不是线性安全的,因为没有使用synchronized关键字,但是优点是效率提高了。与之相比,Vector是线性安全的。

    ArrayList解决线程不安全的办法就是使用synchronized关键字,哈哈哈

    No2:

    ArrayList的内部类SubList是父类的一个视图,其上的操作都会反射到父类ArrayList上。

    比如:删除ArrayList从100到200的数据,使用方法

    list.subList(100,200).clear();

    即可

    No3:

    HashMap允许使用null值和null键

    HashMap也是线程不安全的。

    No4:

    jdk1.8之前HashMap是基于数组+链表来实现,具有相同hash值的节点连在一个链表或树中。

    jdk1.8中HashMap采用数组+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换为红黑树,大大减少了hash冲突时查找时间(从原来的O(n)->O(logn)),由于红黑树的节点空间是链表空间的2倍,为了节省空间,当链表长度减少到阈值(6)时,又会转换为链表形式。

    No5:

    HashMap链表中的结点对应HashMap中的Entry类(jdk1.8之前)或Node类(jdk1.8之后)。

    HashMap其实就是一个Entry(或Node)数组,Entry(或Node)对象中包含了键和值,其中next也是一个Entry(或Node)对象,它就是用来处理hash冲突的,形成一个链表。

    No6:

    HashMap初始容量为16加载因子是0.75,当HashMap中的元素个数超过数组大小*加载因子时,就会进行扩容,一般是扩容为2倍

    No7:

    fail-fast机制:即快速失败机制。当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件。因为HashMap不是线程安全的。

    No8:

    HashMap中哈希函数构造方法是先通过hashCode()方法获取h值,再通过h&(length-1)来得到所在数组的位置。

    length为2的整数幂保证了length-1最后一位为1,从而保证了h&(length-1)的最后一位同时有为0和为1的可能性,保证了散列的均匀性。

    No9:

    HashSet内部就是使用HashMap来存储元素的。

    No10:

    HashSet添加元素e,确保元素不重复

    map中put方法说明:

      如果map中键e存在,则返回旧的键e对应的value值

      如果map中键e不存在,则返回null

    返回值:有重复返回false,无重复返回true

    public boolean add(E e){
        return map.put(e,PRESENT)==null;
    }

    No11:

    HashTable是线程同步的。

    ConcurrentHashMap是线程安全高并发的。

    No12:

    HashTable是用数组+链表实现。

    No13:

    HashTable与HashMap主要区别是,hash函数的算法

    HashTable用的是典型的除留取余法

    int index = (hash&0x7FFFFFFF)%tab.length

    No14:

    LinkedHashMap是数组+双链表结构。继承自HashMap。

    No15:

    集合中的类都有一个共同的迭代方法,就是先把这个集合转化成Set视图,然后再对这个Set视图进行迭代。

  • 相关阅读:
    Node中js获取异步操作的结果
    阿里云服务器(一)——Nodejs环境配置
    Nodejs之路(二)—— Nodejs再入门
    通过IDEA制作包含Java应程序的Docker镜像
    IDEA远程调试Tomcat程序
    思维导图_脑图
    gitlab userguide
    如何渲染MARKDOWN与MATHJAX
    markdown emoji表情包
    changing-a-remote-s-url
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/8081860.html
Copyright © 2011-2022 走看看