博客
关于我
deque stack java_「集合系列」- 初探 java 集合框架图
阅读量:806 次
发布时间:2023-01-24

本文共 2259 字,大约阅读时间需要 7 分钟。

Java 集合框架深入介绍

在软件开发中,Java集合框架是我们日常工作中不可或缺的工具。集合框架为我们提供了丰富的数据结构和算法,使得开发效率大大提升。本文将从集合的基础到各个数据结构的实现机制,系统地分析 Java 集合框架的核心组件。

一、集合类概述

集合框架分为两大体系:CollectionMap。Collection 由 List、Set、Queue 接口组成,List 表示有序、可重复的集合,Set 表示无序、不可重复的集合,Queue 则代表队列数据结构。

Collection 接口体系

  • List:有序集合,可以存储重复元素,常见实现类有 ArrayList、LinkedList、Vector、Stack。
  • Set:无序集合,元素不可重复,常见实现类有 HashSet、LinkedHashSet、TreeSet。
  • Queue:队列,代表“先进先出”(FIFO)的容器,常见实现类有 ArrayDeque、LinkedList、PriorityQueue。

Map 接口体系

Map 是键值对的集合,键唯一性,值可以重复。Map 的实现类包括 HashMap、LinkedHashMap、TreeMap、IdentityHashMap、WeakHashMap、Hashtable、Properties 等。

二、List 类介绍

List 的特性

  • 有序、可重复、支持通过索引随机访问。

List 的实现类

  • ArrayList

    优点:内存动态分配,初速末端插入删除效率较低,扩容时内存拷贝,适合单线程场景。
    缺点:内存占用较高,效率不如 LinkedList。

  • LinkedList

    优点:内存占用低,插入删除效率高,适合双端操作。
    缺点:随机访问效率低,需要遍历双向节点。

  • Vector

    特点:线程安全,方法加锁,效率较低,现代应用中少用。

  • Stack

    特点:类似于双端队列的栈结构,去除重复性代码后可用 ArrayDeque 替代。

  • 三、Set 类介绍

    Set 的特性:无序、不可重复,常见实现类有 HashSet、LinkedHashSet、TreeSet。

  • HashSet

    底层基于 HashMap 的哈希表实现,去重自动处理。

  • LinkedHashSet

    底层基于 LinkedHashMap,保持插入顺序,适合有序场景。

  • TreeSet

    底层基于 TreeMap,根据键值自动排序。

  • 四、Queue 类介绍

    Queue 是队列数据结构,典型实现类有 ArrayDeque、LinkedList、PriorityQueue。

  • ArrayDeque

    双端队列,支持 FIFO 和 LIFO 操作,可自行管理内存指针,适合常用场景。

  • PriorityQueue

    自动排序队列,优先级队列,元素按大小顺序弹出。

  • 五、Map 类介绍

    Map 的实现类涵盖各种用途,从简单的 HashMap 到复杂的 TreeMap,加上线程安全的 Hashtable,多种选择满足不同场景需求。

  • HashMap

    哈希表实现,键唯一性,插入顺序不可控,查询效率高。

  • LinkedHashMap

    和 HashMap 基本相同,不过保持了插入顺序。

  • TreeMap

    键值对按键排序,适合映射排序的场景。

  • WeakHashMap

    键可被回收,适合缓存场景。

  • Hashtable

    线程安全,但性能较低,常用于旧版场景。

  • Properties

    键值为 String,适合配置文件格式存储。

  • 六、比较器和排序

    Comparable 接口

    定义了对象比较的抽象方法。若类实现 Comparable,可以通过 Collections.sort 自动排序。

    Comparator 接口

    允许我们定制比较逻辑,适合对不可比较对象或不按默认逻辑排序的情况进行定制。

    排序工具方法

    通过工具类 Collections 提供快速的排序方法,适用于不同场景的定制排序需求。

    七、工具类

    Java 提供了 Collections 和 Arrays 工具类,提供了丰富的方法以提高开发效率。

  • Collections 类

    提供了通用的集合操作方法,如 addAll、binarySearch、sort、shuffle、reverse 等。

  • Arrays 类

    提供数组操作与排序方法,便于处理原始数组和泛型数组。

  • 八、迭代器

    集合框架的迭代器提供了对集合元素的高效遍历方式,Java 1.5 introduce Hammond迭代器,使得对集合操作更加简洁高效。

    示例代码

    List
    list = new ArrayList<>();list.add("a1");list.add("a2");list.add("a3");Iterator
    it = list.iterator();while (it.hasNext()) { String obj = it.next(); System.out.println(obj);}

    增强成语

    for (String obj : list) {    System.out.println(obj);}

    九、总结

    Java 集合框架是 Java 编程的基础,理解其内部机制和使用场景,对提升开发能力至关重要。集合框架涵盖了众多数据结构和算法,为开发者提供了强大的工具支持。理解每个数据结构的特性和适用场景,将有助于更高效地应用集合框架。

    转载地址:http://maeyk.baihongyu.com/

    你可能感兴趣的文章
    mysql5.7性能调优my.ini
    查看>>
    Mysql5.7深入学习 1.MySQL 5.7 中的新增功能
    查看>>
    Mysql5.7版本单机版my.cnf配置文件
    查看>>
    mysql5.7的安装和Navicat的安装
    查看>>
    mysql5.7示例数据库_Linux MySQL5.7多实例数据库配置
    查看>>
    MySQL8.0.29启动报错Different lower_case_table_names settings for server (‘0‘) and data dictionary (‘1‘)
    查看>>
    MySQL8修改密码报错ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
    查看>>
    MySQL8找不到my.ini配置文件以及报sql_mode=only_full_group_by解决方案
    查看>>
    mysql8的安装与卸载
    查看>>
    mysqlbinlog报错unknown variable ‘default-character-set=utf8mb4‘
    查看>>
    mysqldump 导出中文乱码
    查看>>
    mysqldump备份时忽略某些表
    查看>>
    mysqldump实现数据备份及灾难恢复
    查看>>
    mysqlreport分析工具详解
    查看>>
    MySQL一个表A中多个字段关联了表B的ID,如何关联查询?
    查看>>
    MYSQL一直显示正在启动
    查看>>
    MySQL一站到底!华为首发MySQL进阶宝典,基础+优化+源码+架构+实战五飞
    查看>>
    MySQL万字总结!超详细!
    查看>>
    Mysql下载以及安装(新手入门,超详细)
    查看>>
    MySQL中B+Tree索引原理
    查看>>