【Java 基础】Java 集合(1)

142 阅读2分钟

集合概述

介绍

Java集合,也被称为容器。主要由两大类接口派生而来:

  • Colleciton:主要存储单一对象
  • Map:主要存储键值对(两个对象的映射关系)

Java_collection_cheat_sheet.PNG

分类

Collection

List

存储的对象有序,可重复

  • ArrayList:基于动态数组实现,支持随机访问,线程不安全。【最常用】
  • Vector:基于动态数组实现,线程安全,效率低。【几乎不用】
  • LinkedList:基于双向链表实现(JDK1.6之前循环链表,JDK1.7去除循环),仅支持顺序访问。【不常用】

Queue

存储的对象有序,可重复,且可以按照一定的规则进行排序 \

Queue:接口,单端队列。
Deque:接口,继承Queue,双端队列。ArrayQueue和LinkedList都实现了Deque

  • PriorityQueue:基于二叉堆结构实现,用来实现优先队列。
  • ArrayQueue:基于动态数组和双指针实现,用来实现栈和队列。
  • LinkedList:基于双向链表实现,用来实现双向队列。

Set

存储的对象是不可以重复的

  • HashSet:基于HashMap实现,支持快速查找,查找时间复杂度O(1)。
  • TreeSet:基于红黑树实现,支持有序操作,查找时间复杂度O(logN)。
  • LinkedHashSet:继承HashSet,使用双向链表维护元素的插入顺序,查找时间复杂度O(1)。

Map

使用键值对(K-V)进行存储,“K”:key,无序,唯一;“V”:value,无序,可重复

  • HashMap:JDK1.8之前基于数组+链表实现,JDK1.8之后基于数组+链表+红黑树实现。
  • TreeMap:基于红黑树实现。
  • HashTable:和HashMap类似,线程安全【不常用,可以使用ConCurrentHashMap代替HashTable来支持线程安全,效率更高】
  • LinkedHashMap:继承HashMap,使用双向链表维护元素的插入顺序。

容器的优点:

  1. 提高编程效率
  2. 提高程序性能
  3. 简化设计难度
  4. 提高代码重用性