Collection(单列集合)、Map(双列集合),容易搞混的 Collections 工具类。

Collection(单列集合)Map(双列集合) ,以及容易搞混的 Collections 工具类

一、先搞懂三个长得很像的东西

  1. Collection (带 n,单数)→ 顶层接口,单列集合的根。
  2. Map→ 另一套顶层接口,双列集合的根。
  3. Collections (带 s,复数)→ 工具类,不是集合,用来操作集合(排序、洗牌、同步等)。

二、整体结构(Java 集合框架两大派系)

Java 集合只有两大顶层根接口,互相独立、互不继承:

1. 第一派:Collection 单列集合

存的是:一个个独立的元素 格式:[元素1, 元素2, 元素3]

它下面主要分三大子接口:

(1)List 系列

  • 特点:有序、可重复、有索引
  • 常用实现类:
    • ArrayList:底层数组,查询快、增删慢
    • LinkedList:底层链表,增删快、查询慢
    • Vector:线程安全,已淘汰

(2)Set 系列

  • 特点:无序、不可重复、无索引
  • 常用实现类:
    • HashSet:哈希表,无序
    • LinkedHashSet:有序
    • TreeSet:可排序

(3)Queue 系列

  • 队列,先进先出(FIFO)

Collection 通用方法

java

运行

复制代码
add(E e)        // 添加元素
remove(Object o)// 删除元素
clear()         // 清空
size()          // 元素个数
isEmpty()       // 是否为空
contains(Object o) // 是否包含
iterator()      // 迭代器遍历

2. 第二派:Map 双列集合

存的是:一对一对的数据(key-value) 格式:{key1=value1, key2=value2}

  • 特点:
    • key 必须唯一
    • value 可以重复
    • key 决定唯一性,value 只是附属

常用实现类

  • HashMap:最常用,无序,线程不安全
  • LinkedHashMap:有序
  • TreeMap:按 key 排序
  • Hashtable:线程安全,低效
  • ConcurrentHashMap:线程安全,高效

Map 专用方法(和 Collection 完全不同)

java

运行

复制代码
put(k, v)       // 添加/覆盖键值对
get(k)          // 根据 key 取 value
remove(k)       // 根据 key 删除
containsKey(k)  // 是否包含 key
containsValue(v)// 是否包含 value
keySet()        // 获取所有 key 的集合
entrySet()      // 获取所有键值对
size()          // 键值对个数

三、最核心区别(一句话总结)

表格

维度 Collection 单列集合 Map 双列集合
存储格式 单个元素 E 键值对 K-V
结构 一条线 两条线绑定
根接口 Collection Map
遍历方式 直接遍历元素 遍历 key 或 entry
元素规则 可重复(List)/ 不可重复(Set) key 不可重复
方法体系 add/remove/iterator put/get/keySet

四、特别提醒:Collections 是工具类

很多人把 CollectionCollections 搞混:

  • Collection集合接口,是集合本身

  • Collections工具类 ,里面全是静态方法

    java

    运行

    复制代码
    Collections.sort(list);    // 排序
    Collections.shuffle(list); // 打乱
    Collections.max(collection);

不是集合,不能用来存数据。


五、最终结论

  1. CollectionMap 都是 Java 集合框架的一部分
  2. 但它们是两个完全独立的根接口,没有继承关系
  3. Collection = 单列集合(存单个对象)
  4. Map = 双列集合(存 key-value 对)
  5. Collections = 操作集合的工具类
相关推荐
Rhystt2 小时前
代码随想录算法训练营第六十天|多余的边?从基础到进阶!
开发语言·c++·算法·图论
skiy2 小时前
springboot+全局异常处理
java·spring boot·spring
愤豆2 小时前
07-Java语言核心-JVM原理-JVM对象模型详解
java·jvm·c#
东离与糖宝2 小时前
零基础Java学生面试通关手册:项目+算法+框架一次搞定
java·人工智能·面试
gaozhiyong08132 小时前
超越跑分:Gemini 3.1 Pro 2026年多维度能力评估体系深度拆解
java·开发语言
皙然2 小时前
深入解析Java volatile关键字:作用、底层原理与实战避坑
java·开发语言
再玩一会儿看代码2 小时前
Java中 next() 和 nextLine() 有什么区别?一篇文章彻底搞懂
java·开发语言·经验分享·笔记·学习
羊小猪~~2 小时前
【QT】-- QMainWindow简介
开发语言·数据库·c++·后端·qt·前端框架·求职招聘
2301_810160952 小时前
C++中的策略模式进阶
开发语言·c++·算法