文章系统性介绍了 Java LinkedList 的常用 API,包括 peek/peekFirst/peekLast(获取头、首、尾元素但不删除)、poll/pollFirst/pollLast(获取并删除头、首、尾元素)、offer/offerFirst/offerLast(在尾部、头部或末尾插入元素)及其返回值含义。随后通过一个完整的示例代码展示了这些方法的具体调用及运行结果,帮助读者直观理解各 API 的行为和使用场景。

本文介绍了 LeetCode 647 “回文子串”问题:统计字符串中所有回文子串的数量。说明了回文子串的定义及示例("abc" → 3,"aaa" → 6),并给出 Java 实现。核心算法为中心扩展法,遍历 2·n‑1 个可能的中心,对每个中心向左右扩展,只要左右字符相等即计数,最终返回总数。代码简洁高效,时间复杂度 O(n²),空间复杂度 O(1)。

本文介绍了 LeetCode 322 “零钱兑换”问题的求解思路。给定硬币面额数组和目标金额,要求返回凑成该金额的最少硬币数,若不可达返回 -1。代码实现采用自底向上的动态规划:用一个长度为 amount+1 的数组 target 保存每个子金额的最优硬币数,初始值设为 amount+1(视为不可达),target[0]=0。遍历所有金额 i,针对每枚硬币 coin 若 i-coin≥0,则更新 target[i]=min(target[i], target[i-coin]+1)。最终若 target[amount]仍为初始值则返回 -1,否则返回其值。示例演示了不同输入的输出结果。

本文介绍了 LeetCode 1324 “竖直打印单词”的实现思路与 Java 代码。先将输入字符串按空格分割为单词数组,遍历求出最长单词长度;随后按行(从第 0 行到最长长度‑1)逐列构造字符序列,对每个单词若当前行索引在其长度范围内则取对应字符,否则填充空格。构造完一行后,从右向左删除末尾的连续空格,确保输出不含尾随空格。最终将每行字符串加入列表返回。代码示例展示了对不同输入的正确输出。

Collections 是 JDK 中 java.util 包的工具类,提供一系列静态方法,便于对集合进行操作。常用功能包括:排序(reverse、shuffle、sort、swap)、查找(binarySearch、max、min、frequency、fill)、同步包装(synchronizedList 等)以在多线程环境下安全使用集合、创建不可变集合(empty、singleton、unmodifiable)以及其他实用方法(addAll、disjoint)。文中通过代码示例展示了这些方法的使用效果,并指出在并发场景应优先使用 CopyOnWriteArrayList、ConcurrentHashMap 等并发集合。作者强调深入源码学习 Collections 的设计,可提升编码水平,体现工具类背后的深厚技术价值。

本文围绕Java中Object类的equals方法展开,说明何时需要或不需要重写:在需要比较“逻辑相等”(如作为Map、Set键)时应重写,而唯一实例、私有类、已在超类实现等情况可不写。重写时必须遵守五大约定——自反、对称、传递、一致、非空——并配合重写hashCode。文中以Date与Timestamp的对称性失效为例,提醒避免跨类比较;并以AbstractSet的实现展示高质量equals的写法:先判引用相等、类型检查、大小比较、containsAll,最后捕获异常。最后强调参数类型必须保持Object,避免误写成重载。