【Java基础】Java容器相关知识小结

Java容器相关知识

    • [0. 前言](#0. 前言)
    • [1. Collection接口](#1. Collection接口)
      • [1.1. List接口](#1.1. List接口)
        • [1.1.1. ArrayList](#1.1.1. ArrayList)
        • [1.1.2. LinkedList](#1.1.2. LinkedList)
        • [1.1.3. Vector](#1.1.3. Vector)
        • [1.1.4. Stack](#1.1.4. Stack)
      • [1.2. Set接口](#1.2. Set接口)
        • [1.2.1. HashSet](#1.2.1. HashSet)
        • [1.2.2. LinkedHashSet](#1.2.2. LinkedHashSet)
        • [1.2.3. TreeSet](#1.2.3. TreeSet)
      • [1.3. Queue接口](#1.3. Queue接口)
        • [1.3.1. PriorityQueue](#1.3.1. PriorityQueue)
        • [1.3.2. LinkedList](#1.3.2. LinkedList)
    • [2. Map接口](#2. Map接口)
      • [2.1. HashMap](#2.1. HashMap)
      • [2.2. TreeMap](#2.2. TreeMap)
      • [2.3. LinkedHashMap](#2.3. LinkedHashMap)
    • 3.常见用法------增/删/改/查/排序/容量
    • 后记
    • 参考文章

0. 前言

容器,顾名思义,就是java中存储数据的常用结构,在C++中我们接触过数组、链表等等,在java中,容器则进一步规范化,形成了如下的容器接口继承关系图:

java容器主要包括collection接口(集合)和map接口(图)

1. Collection接口

1.1. List接口

1.1.1. ArrayList

数组实现,查询快,增删慢,线程不安全,效率高;

1.1.2. LinkedList

链表实现,查询慢,增删快,线程不安全,效率高;

1.1.3. Vector

数组实现,查询快,增删慢,同步访问

1.1.4. Stack

vector子类,先进后出,vector不常用,stack却很常用。

1.2. Set接口

1.2.1. HashSet

基于HashMap实现,线程不安全,效率高;

存储元素无序,不可重复;

1.2.2. LinkedHashSet

基于LinkedHashMap实现,线程不安全,效率高;

存储元素有序,不可重复;

1.2.3. TreeSet

基于TreeMap实现,线程不安全,效率高;

存储元素有序,不可重复;

1.3. Queue接口

1.3.1. PriorityQueue

通过二叉小顶堆实现,可以用一棵完全二叉树表示。

1.3.2. LinkedList

链表实现,查询慢,增删快,线程不安全,效率高;

2. Map接口

2.1. HashMap

数组+链表+红黑树实现,线程不安全,效率高;

重点是扩容和红黑树转换

2.2. TreeMap

和HashMap无序排序不同,SortedMap接口在内部会对Key进行排序,注意到SortedMap是接口,它的实现类是TreeMap。

2.3. LinkedHashMap

底层数据结构类似hashmap,但是内部还有一个双向链表维护键值对的顺序,每个键值对既位于哈希表中,也位于双向链表中。LinkedHashMap支持两种顺序插入顺序、访问顺序。

3.常见用法------增/删/改/查/排序/容量

以上是简单的容器特性介绍,下面是一些常用的容器类的使用方法,废话不多说,上图:

后记

如果觉得我写得还算不错,不妨点赞关注一波走起~

想看更多博文,请访问我的各平台主页:博客园 / CSDN / 51CTO / 掘金论坛 / 知乎

参考文章

  1. Java常用容器基础操作汇总
  2. 菜鸟教程相关文章
相关推荐
脚踏实地皮皮晨几秒前
003004002_UniformGrid控件的使用方法
开发语言·c#·.net·wpf·visual studio
XH华4 分钟前
C++语言第四章:模板初阶
数据结构·c++·算法
纳兰青华5 分钟前
拼图大师:从“暴力尝试“到“动态规划“的拆字艺术
java·算法·动态规划
j7~1 小时前
【Linux】二十六.线程篇三《Linux多线程编程:线程控制、线程ID以及进程地址空间分布、线程局部存储__thread以及clone系统调用》---详解
linux·运维·服务器·开发语言·c++·多线程编辑·线程的控制
维吉斯蔡9 小时前
【VS Code / Cursor】文件夹右键快捷打开与文件类型自动关联
开发语言·程序人生·学习方法
蓝斯4979 小时前
[原创]《C#高级GDI+实战:从零开发一个流程图》第章:增加贝塞尔曲线,上、下、左、右连接点
java·c#·流程图
BullSmall9 小时前
Anolis OS 8.10 Docker 部署 PostgreSQL 15 完整实操
docker·postgresql·容器
前端工作日常9 小时前
我学习到的Java 的 Service 分层:itf 和 impl 到底是什么?
java·后端
都叫我大帅哥10 小时前
Spring @Transactional 注解完全指南
java·spring