Java 核心类库与数据结构

Java 核心类库是 JDK 内置的基础类集合,涵盖数据处理、I/O、并发等通用功能,无需手动实现即可直接调用;数据结构是组织和存储数据的方式,Java 通过集合框架将常用数据结构封装为可直接使用的类,二者结合支撑起 Java 程序的基础数据操作能力。

一、 核心类库(工具类为主)

核心类库主要位于 java.lang (默认导入)、 java.util 、 java.math 等包中,以下是高频核心工具类:

  1. 字符串相关类
  • String :不可变字符序列,底层是 char[] (JDK8)或 byte[] (JDK9+),每次修改都会生成新对象;重写了 equals() 和 hashCode() ,支持字符串拼接、查找、截取等操作。

  • StringBuffer :可变字符序列,线程安全(方法加 synchronized ),适合多线程环境下的字符串修改。

  • StringBuilder :可变字符序列,非线程安全,效率高于 StringBuffer ,是单线程环境的首选。

  1. 日期时间类
  • 旧版( java.util ): Date 表示时间戳, SimpleDateFormat 用于格式化,但存在线程不安全问题; Calendar 用于日期字段的计算,设计复杂、易出错。

  • 新版( java.time ,JDK8 引入): LocalDate (日期)、 LocalTime (时间)、 LocalDateTime (日期+时间),支持链式调用; DateTimeFormatter 负责格式化与解析,替代 SimpleDateFormat ,线程安全。

  1. 数学与数值类
  • Math :提供静态方法,如 abs() (绝对值)、 round() (四舍五入)、 random() (随机数)、 max() / min() 等,基于系统原生方法实现,效率高。

  • BigInteger :处理任意长度的整数,解决 int / long 的取值范围限制,支持加减乘除、取模、幂运算等。

  • BigDecimal :处理高精度小数,解决浮点数运算的精度丢失问题,需通过 String 构造方法初始化,常用方法有 add() 、 subtract() 、 multiply() 、 divide() (需指定舍入模式)。

  1. 包装类

对应 8 种基本数据类型,分别是 Byte 、 Short 、 Integer 、 Long 、 Float 、 Double 、 Character 、 Boolean ,实现了基本类型与对象的转换。

  • 自动装箱:基本类型→包装类(如 int → Integer );自动拆箱:包装类→基本类型(如 Integer → int )。

  • 提供常量(如 Integer.MAX_VALUE )和静态方法(如 Integer.parseInt() 实现字符串转整数)。

二、 数据结构(集合框架)

Java 集合框架( java.util 包)是数据结构的核心实现,分为 Collection 和 Map 两大体系,支持动态存储、检索、修改数据,替代了传统数组的固定长度限制。

  1. 核心接口体系
  • Collection:单列集合根接口,存储单个元素,子接口包含 List、Set、Queue。

  • List:有序、可重复,支持索引访问,子接口实现类包含 ArrayList、LinkedList、Vector。

  • Set:无序、不可重复,基于哈希或排序去重,子接口实现类包含 HashSet、LinkedHashSet、TreeSet。

  • Queue:队列,遵循 FIFO(先进先出)原则,实现类包含 LinkedList、PriorityQueue。

  • Map:双列集合根接口,存储键值对(Key-Value),Key 唯一,实现类包含 HashMap、LinkedHashMap、TreeMap、Hashtable。

  1. 常用数据结构实现类详解

(1) List 系列(有序可重复)

  • ArrayList:底层是动态数组,初始容量 10,扩容时默认扩容 1.5 倍;查询快(通过索引直接访问),增删慢(需移动元素);非线程安全,适合读多写少场景。

  • LinkedList:底层是双向链表,每个节点存储前驱、后继和元素;增删快(仅需修改节点引用),查询慢(需遍历链表);实现了 Deque 接口,可作为栈、队列使用;非线程安全。

  • Vector:底层是动态数组,扩容时默认扩容 2 倍;方法加 synchronized ,线程安全,但效率低于 ArrayList ,多用于老旧项目。

(2) Set 系列(无序不可重复)

  • HashSet:底层基于 HashMap 实现,元素作为 HashMap 的 Key,Value 为固定对象;利用哈希表去重,元素需重写 equals() 和 hashCode() ;无序,查询、增删效率高(时间复杂度 O(1))。

  • LinkedHashSet:继承 HashSet ,底层是 LinkedHashMap ;有序(维护插入顺序),兼具 HashSet 的高效和链表的有序性。

  • TreeSet:底层基于红黑树实现;排序(自然排序或自定义 Comparator),查询、增删效率为 O(log n);元素需实现 Comparable 接口或指定比较器。

(3) Map 系列(键值对存储)

  • HashMap:底层是数组+链表+红黑树(JDK8 优化);Key 不可重复,Value 可重复;Key 需重写 equals() 和 hashCode() ;非线程安全,允许 Key/Value 为 null ;默认容量 16,负载因子 0.75,扩容为 2 倍。

  • LinkedHashMap:继承 HashMap ,维护双向链表记录插入顺序;有序(插入或访问顺序),适合需要保留键值对顺序的场景。

  • TreeMap:底层基于红黑树;Key 自动排序(自然排序或自定义比较器);Key 需实现 Comparable 接口;不允许 Key 为 null 。

  • Hashtable:底层是哈希表;方法加 synchronized ,线程安全;不允许 Key/Value 为 null ;效率低于 HashMap ,逐渐被淘汰。

  1. 工具类
  • Collections:提供静态方法操作集合,如 sort() (排序 List)、 reverse() (反转 List)、 synchronizedList() (将非线程安全集合转为线程安全)、 binarySearch() (二分查找)。

  • Arrays:提供静态方法操作数组,如 sort() (数组排序)、 toString() (数组转字符串)、 asList() (数组转 List)。

三、 核心类库与数据结构的关联

  1. 数据结构依赖核心类库:如 ArrayList 底层依赖 Object[] 数组, HashMap 依赖 Object 类定义的 hashCode() / equals() 方法。

  2. 核心类库借助数据结构优化性能:如 String 的不可变性基于字符数组实现, LinkedList 作为队列依赖链表结构的 FIFO 特性。

相关推荐
辣机小司2 小时前
【踩坑记录:EasyExcel 生产级实战:策略模式重构与防御性导入导出校验指南(实用工具类分享)】
java·spring boot·后端·重构·excel·策略模式·easyexcel
better_liang2 小时前
每日Java面试场景题知识点之-RabbitMQ消息重复消费问题
java·分布式·消息队列·rabbitmq·幂等性
醒过来摸鱼2 小时前
Spring Cloud Gateway
java·spring·spring cloud
2501_944441752 小时前
Flutter&OpenHarmony商城App消息通知组件开发
java·javascript·flutter
we1less2 小时前
[audio] AudioTrack (四) getOutputForAttr 分析
android·java
计算机毕设指导62 小时前
基于微信小程序的博物馆文创系统【源码文末联系】
java·spring boot·微信小程序·小程序·tomcat·maven·intellij-idea
棱镜研途2 小时前
科研快报 |从特斯拉到科沃斯:具身智能让机器人成真!
人工智能·深度学习·目标检测·机器学习·计算机视觉·机器人·智能控制
无能者狂怒2 小时前
DETR(DEtection TRansformer)——基于Transformer的目标检测范式革命与演进
人工智能·深度学习·yolo·目标检测·计算机视觉·transformer
后端小张2 小时前
【JAVA 进阶】Spring Boot自动配置详解
java·开发语言·人工智能·spring boot·后端·spring·spring cloud