Collection单列集合、Map(Key - Value)双列集合,多继承实现。

Collection集合:

Collection、List、Set、Queue 全是接口

ArrayList、LinkedList、HashSet 全是实现类

LinkedList 双实现:List + Queue


1. 顶层:Collection 接口(单列根接口)

复制代码
public interface Collection<E> extends Iterable<E> {
    // 增
    boolean add(E e);
    // 删
    boolean remove(Object o);
    // 查大小
    int size();
    // 是否为空
    boolean isEmpty();
    // 是否包含
    boolean contains(Object o);
    // 清空
    void clear();
}

2. 三个子接口 继承 Collection

List 接口

复制代码
public interface List<E> extends Collection<E> {
    // 特有:根据索引增删改查
    E get(int index);
    E set(int index, E element);
    void add(int index, E element);
    E remove(int index);
}

Set 接口

复制代码
public interface Set<E> extends Collection<E> {
    // 完全继承Collection,无特有方法
    // 规则:不可重复、无索引
}

Queue 接口(队列)

复制代码
public interface Queue<E> extends Collection<E> {
    // 队列特有:入队、出队、队首
    boolean offer(E e);
    E poll();
    E peek();
}

3. 实现类源码( ArrayList / LinkedList)

ArrayList 实现 List

复制代码
public class ArrayList<E> implements List<E> {
    // 底层:Object[] 数组
    transient Object[] elementData;
    
    @Override
    public boolean add(E e) {
        // 数组扩容 + 尾插
    }
}

LinkedList 实现 List + Queue

复制代码
// 重点:同时实现两个接口
public class LinkedList<E> implements List<E>, Queue<E> {
    // 底层:双向链表节点
    private static class Node<E> {
        E item;
        Node<E> next;
        Node<E> prev;
    }
}

HashSet 实现 Set

复制代码
public class HashSet<E> implements Set<E> {
    // 底层本质:HashMap
}

4. 终极继承关系 代码版

复制代码
// 顶层
Collection
├─ List    → ArrayList、LinkedList
├─ Set     → HashSet
└─ Queue   → LinkedList、ArrayDeque

关键=

  1. Collection、List、Set、Queue → 全是接口
  2. ArrayList、LinkedList、HashSet → 全是实现类
  3. LinkedList 多实现 :implements List, Queue
  4. Map 不继承 Collection,单独一套

Map 顶层接口(和 Collection 平级,互不继承)

复制代码
public interface Map<K,V> {
    // 增
    V put(K key, V value);
    // 查
    V get(Object key);
    // 删
    V remove(Object key);
    // 判空、大小
    int size();
    boolean isEmpty();
    boolean containsKey(Object key);
    boolean containsValue(Object value);

    // 三个集合视图(核心)
    Set<K> keySet();
    Collection<V> values();
    Set<Map.Entry<K,V>> entrySet();

    // 内部静态嵌套接口:键值对条目
    interface Entry<K,V> {
        K getKey();
        V getValue();
    }
}

常用实现类 源码结构

1. HashMap(日常最常用)

复制代码
public class HashMap<K,V> implements Map<K,V> {
    // 底层:数组+链表+红黑树
    transient Node<K,V>[] table;
}

2. LinkedHashMap(有序)

复制代码
public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V> {
    // 保留插入顺序
}

3. TreeMap(排序)

复制代码
public class TreeMap<K,V> implements Map<K,V> {
    // 底层红黑树,key自动排序
}

全集架构 终极对照

复制代码
// 单列集合 根接口
Collection
├─ List
├─ Set
└─Queue

// 双列集合 根接口(平级!不继承Collection)
Map
├─ HashMap
├─ LinkedHashMap
└─ TreeMap

总结

  1. Collection → 单列:单个元素
  2. Map → 双列:key-value 键值对
  3. Map 和 Collection 完全平级,没有任何继承关系
  4. entrySet() 就是把每一组键值对封装成 Map.Entry
相关推荐
李纲明1 分钟前
WordPress 媒体库上传失败或一直转圈:先核 PHP 上传限制与目录权限,再查安全插件与对象存储
运维·开发语言·安全·php·wordpress·媒体库·devdiy
文丑颜不良啊40 分钟前
LeetCode1461~1480题目解析
java·leetcode
2301_780789668 小时前
跨平台适配!SDK 游戏盾兼容全终端游戏场景
java·网络·ddos
第九序言T8 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
学长毕设9 小时前
基于springboot的食品仓库管理系统
java·spring boot·后端
步行cgn10 小时前
FormHttpMessageConverter 详解:Spring MVC 中表单数据的读写转换器
java·spring·mvc
龙亘川10 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
金銀銅鐵10 小时前
[Java] 用 CLI 展示 EnumMap 增删键值对时的内部变化
java·源码·ai编程
程序喵大人10 小时前
【C++入门】内存模型与资源管理 - 09 shared_ptr 和 weak_ptr 解决共享,也带来代价
开发语言·c++·资源管理·智能指针·内存模型
秋天的怀念_David10 小时前
第二十二夜 · 数字迷雾
java·程序人生·算法