Java集合框架整体分类(完整的集合框架关系)

Java集合框架整体分类

完整的集合框架关系

text 复制代码
Collection接口
├── List接口(有序可重复)
│   ├── ArrayList
│   ├── LinkedList  
│   └── Vector
│
├── Set接口(无序不可重复)
│   ├── HashSet
│   ├── LinkedHashSet
│   └── TreeSet
│
└── Queue接口(队列)
    ├── LinkedList
    ├── PriorityQueue
    └── Deque接口(双端队列)
        ├── ArrayDeque
        └── LinkedList

Map接口(键值对)
├── HashMap
├── LinkedHashMap
├── TreeMap
└── Hashtable

1. Collection接口(单列集合)

存储单个对象的集合,分为三大类:

List(有序、可重复)
java 复制代码
// ArrayList - 基于数组,查询快,增删慢
List<String> arrayList = new ArrayList<>();
arrayList.add("Java");
arrayList.add("Python");
arrayList.add("Java"); // 可重复

// LinkedList - 基于链表,增删快,查询慢
List<Integer> linkedList = new LinkedList<>();
linkedList.add(1);
linkedList.add(2);

// Vector - 线程安全,已过时
List<String> vector = new Vector<>();
Set(无序、不可重复)
java 复制代码
// HashSet - 基于哈希表,无序
Set<String> hashSet = new HashSet<>();
hashSet.add("Apple");
hashSet.add("Banana");
hashSet.add("Apple"); // 不会重复添加

// LinkedHashSet - 保持插入顺序
Set<Integer> linkedHashSet = new LinkedHashSet<>();
linkedHashSet.add(3);
linkedHashSet.add(1);
linkedHashSet.add(2); // 输出顺序:3,1,2

// TreeSet - 自然排序或定制排序
Set<String> treeSet = new TreeSet<>();
treeSet.add("Orange");
treeSet.add("Apple");
treeSet.add("Banana"); // 输出顺序:Apple, Banana, Orange
Queue(队列)
java 复制代码
// LinkedList 实现队列
Queue<String> queue = new LinkedList<>();
queue.offer("A");
queue.offer("B");
queue.poll(); // A

// PriorityQueue - 优先级队列
Queue<Integer> priorityQueue = new PriorityQueue<>();
priorityQueue.offer(5);
priorityQueue.offer(1); // 1会先出队

// ArrayDeque - 双端队列,也可用作栈
Queue<String> arrayDeque = new ArrayDeque<>();

2. Map接口(双列集合)

存储键值对的集合

java 复制代码
// HashMap - 基于哈希表,无序
Map<String, Integer> hashMap = new HashMap<>();
hashMap.put("Alice", 25);
hashMap.put("Bob", 30);

// LinkedHashMap - 保持插入顺序
Map<String, String> linkedHashMap = new LinkedHashMap<>();
linkedHashMap.put("key1", "value1");
linkedHashMap.put("key2", "value2");

// TreeMap - 按键排序
Map<String, Integer> treeMap = new TreeMap<>();
treeMap.put("Orange", 5);
treeMap.put("Apple", 3); // 按键字母顺序排序

// Hashtable - 线程安全,已过时
Map<String, String> hashtable = new Hashtable<>();

栈和队列在集合框架中的位置

栈(Stack)的实现

java 复制代码
// 方式1:使用Stack类(继承自Vector,不推荐)
Stack<Integer> stack1 = new Stack<>();
stack1.push(1);
stack1.pop();

// 方式2:使用Deque接口的实现类(推荐)
Deque<Integer> stack2 = new ArrayDeque<>();  // 或 LinkedList
stack2.push(1);
stack2.push(2);
stack2.pop(); // 2

队列(Queue)的实现

java 复制代码
// LinkedList实现
Queue<String> queue1 = new LinkedList<>();
queue1.offer("A");
queue1.poll();

// ArrayDeque实现  
Queue<Integer> queue2 = new ArrayDeque<>();
queue2.offer(1);
queue2.poll();

双端队列(Deque)的实现

java 复制代码
Deque<String> deque = new ArrayDeque<>();
// 作为栈使用
deque.push("A");
deque.pop();

// 作为队列使用
deque.offer("B");
deque.poll();

// 双端操作
deque.offerFirst("C");
deque.offerLast("D");

使用建议

  1. 需要频繁查询 :使用ArrayList或HashMap
  2. 需要频繁增删 :使用LinkedList
  3. 需要去重 :使用HashSet
  4. 需要排序 :使用TreeSet或TreeMap
  5. 需要队列功能 :使用LinkedList或ArrayDeque
  6. 需要栈功能 :使用ArrayDeque(推荐)或Stack
  7. 需要线程安全 :使用ConcurrentHashMap、CopyOnWriteArrayList等并发集合
相关推荐
蛋蛋的就会顺顺的4 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
需要8264 小时前
Spring Bean 生命周期:从实例化到销毁的完整钩子
java·后端·spring
小 黄 鸡5 小时前
HashMap 面试必会知识点详解(JDK 8)
java·面试·职场和发展
死磕音视频5 小时前
让小模型做选择题:限定候选项并读取 logits 概率的入门实践(附 Python 代码)
开发语言·python·大模型·文本分类·transformers
伯恩bourne6 小时前
Spring Boot Bean 注册的两种方式:@Component 家族 vs @Configuration + @Bean
java·spring boot·后端
silvamux_7 小时前
curl 测试 OpenAI 兼容 API 的完整流程
java·人工智能·缓存·ai·oneapi
省钱兄--zs7 小时前
深圳24小时自助健身房软硬件解决方案实战指南与开发流程详解
java·数据仓库·spring boot·小程序·架构
顽疲7 小时前
Java vue 养老系统源码详解:月账单 care_month_bill 与 Quartz 扣费 Job 实践
java·开发语言·vue.js·vue养老·springboot养老·java养老
Wang's Blog8 小时前
Java 项目实战: 交友项目 - 安装开发工具与环境准备
java·开发语言·交友
用户21296835261688 小时前
开源了一个 Java 多智能体 LLM 框架 Baton:一个依赖,把 Agent 循环、工具调用、记忆、编排全配齐
java·llm