NipGeihou's blog NipGeihou's blog
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档

NipGeihou

我见青山多妩媚,料青山见我应如是
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档
  • 设计模式

  • 开发规范

  • 经验分享

  • 记录

  • 快速开始

  • 笔记

    • 多线程与并发

    • JDK

    • Java集合

      • Java集合 - 简介
        • Collection
          • Set
          • TreeSet
          • HashSet
          • LinkedHashSet
          • List
          • ArrayList
          • Vector
          • LinkedList
          • Queue
          • LinkedList
          • PriorityQueue
        • Map
          • TreeMap
          • HashMap
          • Hashtable
          • LinkedHashMap
    • Spring

    • JVM

    • Other

  • 面试题

  • 微服务

  • 踩过的坑

  • Java
  • 笔记
  • Java集合
NipGeihou
2022-11-28
目录

Java集合 - 简介

# Collection

容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对 (两个对象) 的映射表。

有序性

有序性,遍历时可根据插入顺序遍历,无序则反之。

# Set

# TreeSet

数据结构:红黑树

查询时间复杂度: O(log2n)(二分查找树)

说明:特殊的 TreeMap,查找效率不如哈希表实现的,支持有序性操作

# HashSet

数据结构:哈希表

查询时间复杂度:O(1)

说明:特殊的 HashMap,支持快速查找,不支持有序性操作。

# LinkedHashSet

数据结构:哈希表 + 双向链表

查询时间复杂度:O(1)

说明:支持快速查找,支持有序性操作。

# List

# ArrayList

数据结构:(动态) 数组

查询时间复杂度:O(n)

说明:支持随机访问

# Vector

数据结构:(动态) 数组

查询时间复杂度:O(n)

说明:支持随机访问,线程安全的

# LinkedList

数据结构:双向链表

查询时间复杂度:O(n)

说明:基于双向链表实现,只能顺序访问,但是可以快速地在链表中间插入和删除元素。不仅如此,LinkedList 还可以用作栈、队列、双向队列。

# Queue

# LinkedList

虽然是一个 List,但它可以实现 Queue 的功能。

# PriorityQueue

数据结构:小顶堆 (完全二叉树,任意一个非叶子节点的权值,都不大于其左右子节点的权值)

查询时间复杂度: O(log2n)(二分查找树)

说明:基于堆结构实现,可以用它来实现优先队列。

# Map

# TreeMap

数据结构:红黑树

查询时间复杂度: O(log2n)(二分查找树)

说明:查找效率不如哈希表实现的,支持有序性操作

# HashMap

数据结构:

  • JDK7:数组 + 链表
  • JDK8:数组 + 链表 (或红黑树)

查询时间复杂度: O(1)

说明:线程不安全,扩容时会出现问题

# Hashtable

数据结构:数组 + 链表

查询时间复杂度: O(1)

说明:和 HashMap 类似,但它是线程安全的,这意味着同一时刻多个线程可以同时写入 HashTable 并且不会导致数据不一致。它是遗留类,不应该去使用它。现在可以使用 ConcurrentHashMap 来支持线程安全,并且 ConcurrentHashMap 的效率会更高,因为 ConcurrentHashMap 引入了分段锁。

# LinkedHashMap

数据结构:HashMap (数组 + 链表 [+ 红黑树]) + LinkedList (双向链表)

查询时间复杂度: O(1)

说明:LinkedHashMap 是 HashMap 的一个子类,保存了记录的插入顺序 (有序性)。

上次更新: 2023/02/07, 20:10:39
Javadoc
Spring常见面试题

← Javadoc Spring常见面试题→

最近更新
01
Docker Swarm
04-18
02
安全隧道 - gost
04-17
03
Solana最佳实践
04-16
更多文章>
Theme by Vdoing | Copyright © 2018-2025 NipGeihou | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式