# Java集合概览

作者:Ethan.Yang
博客:https://blog.ethanyang.cn (opens new window)


Java集合框架是Java编程中不可或缺的一部分,它提供了丰富的数据结构和算法实现,帮助开发者高效存储、管理和操作数据。本文将从集合框架的体系结构、核心接口,以及主要接口的特点与适用场景来全面介绍Java集合框架基础知识。

# 一、集合框架体系结构

# 核心接口

  • Collection:表示一组元素的集合,是List、Set、Queue的父接口。
  • Map:表示键值对映射关系,不继承Collection接口。
  • Iterator:用于遍历集合元素的接口。

# 集合体系结构图


# 二、Collection 与 Map 接口的区别

# Collection接口

  • 代表一组元素的集合,元素之间无键值对应关系。
  • 主要子接口:List、Set、Queue。
  • 适用场景:存储单一元素,如学生名单。

# Map接口

  • 代表键值对映射关系,每个键映射一个值。
  • 不继承Collection接口。
  • 适用场景:存储关联数据,如用户名和密码的映射。

# 根本区别与典型应用

  • Collection是“元素”的集合,Map是“键值对”的集合。
  • Collection允许重复元素(取决于实现),Map中键不允许重复。
  • 应用示例:
    • Collection:购物车商品列表。
    • Map:配置文件键值对。

# 三、List、Set、Queue 三大接口特点与适用场景

# List接口

  • 特点:有序,允许重复元素,支持索引访问。
  • 主要实现:
    • ArrayList:查询快,增删慢(尾部添加快)。
    • LinkedList:增删快,查询慢。
    • Vector:线程安全,但性能较差。
  • 适用场景:频繁随机访问、有序且允许重复元素的集合。

# Set接口

  • 特点:不允许重复元素,不保证顺序(部分实现例外)。
  • 主要实现:
    • HashSet:无序,基于哈希表。
    • LinkedHashSet:有序(插入顺序)。
    • TreeSet:有序(自然排序或Comparator)。
  • 适用场景:去重集合,如唯一用户ID;需要排序的唯一集合。

# Queue接口

  • 特点:FIFO或优先级顺序处理元素,支持入队出队。
  • 主要实现:
    • LinkedList:实现Queue接口。
    • PriorityQueue:基于优先级堆实现。
    • ArrayDeque:基于数组的双端队列。
  • 适用场景:任务调度、消息传递、线程池任务队列。