深入理解Java集合

来源:互联网 发布:淘宝客全店推广如何做 编辑:程序博客网 时间:2024/05/17 04:57

集合

ArrayList

  • 基于数组方式实现,无容量限制
  • 在插入元素时可能需要扩容;在删除元素时并不会减小数组的容量(如希望相应的缩小数组的容量,可以调用ArrayList的trimToSize()方法);在查找元素时要遍历数组,对于非null的元素采用equals的方式寻找
  • 非线程安全

LinkedList

  • 基于双向链表机制实现
  • 在插入元素时,需创建一个新的Entry对象,并切换相应元素的前后元素的引用;在查找元素时,需遍历链表;在删除元素时,要遍历链表,找到要删除的元素,然后从链表上将此元素删除即可
  • 非线程安全

Vector

  • 基于Synchronized实现的线程安全的ArrayList,但在插入元素时容量扩充的机制和ArrayList不通,并可通过传入capacityIncrement来控制容量的扩充
  • 线程安全

Stack

  • 基于Vetcor实现,支持LIFO
  • 线程安全

HashSet

  • 基于HashMap实现,无容量限制
  • 非线程安全

TreeSet

  • 基于TreeMap实现,支持排序
  • 非线程安全

HashMap

  • 采用数组方式存储key、value构成的Entry对象,无容量限制
  • 基于key hash寻找Entry对象存放到数组的位置,对于hash冲突采用链表的方式解决
  • 在插入元素时可能要扩大数组的容量,在扩大容量时必须要重新计算hash,并赋值对象到新的数组中
  • 非线程安全

TreeMap

  • 基于红黑树实现,无容量限制
  • 非线程安全
原创粉丝点击