集合存放的是对象的引用。

集合框架 - 图1

ArrayList和LinkedList的区别

  • 数据结构;一个是数组,一个是双向链表。
  • 随机访问效率;LinkedList需要移动指针。
  • 删除、增加效率;ArrayList需要改变其他元素索引。


    HashMap

    Hash算法

  • 哈希算法是指把任意长度的二进制映射为固定长度的较小的二进制值,这个较小的二进制值叫做哈希值。

  • 如果两个对象相等,则hashcode一定也是相同的。
  • 两个对象有相同的hashcode值,它们也不一定是相等的。

    HashMap实现原理理解

    put元素时,先对比hash值,结果如果相同再equals(),这时候会出现两种情况:

  • key值相同,直接覆盖。

  • key值不同,将key-value放入链表中。

链表

  • 单向链表:每一个节点分为存储数据的data和指向下一个节点的next指针组成
  • 双向链表:除了next,多了一个一个指向前一个节点的指针

推荐阅读

集合面试题