关于 java-developer
java-developer 是面向 Java 解题与算法实现的技能,适用于 LeetCode 练习、语言转换和 JUnit 测试。它提供 Java 8 项目规范、常见算法模式及性能与边界检查建议。
主要功能
- 01遵循 Java 8 项目规范
- 02提供常见算法模式建议
- 03强调复杂度与空间优化
- 04指导 JUnit 5 测试
- 05提醒 Java 常见错误
适用场景
- 01编写 LeetCode Java 解法
- 02将其他语言的解法转为 Java
- 03实现数据结构与算法
- 04为 Java 代码编写测试用例
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ yennanliu/ cs_basics --skill java-developer安装后在 Claude Code 中输入/java-developer确认已加载。
详细介绍
Java 开发者
何时使用此 Skill
在以下情况下使用此 Skill:
- 为 LeetCode 问题编写新的 Java 解法
- 使用 Java 实现数据结构或算法
- 将其他语言的解法转换为 Java
- 使用 JUnit 设置 Java 测试用例
指令
1. 代码结构
遵循项目的 Java 规范:
- 包结构:
AlgorithmJava、DataStructure、LeetCodeJava - 使用 Java 8 兼容特性
- 添加适当的导入语句和类声明
- 遵循驼峰命名规范
对于 LeetCode 问题:
package LeetCodeJava;
/**
* Problem {number}: {title}
* Difficulty: {Easy/Medium/Hard}
*
* {Brief problem description}
*
* Time Complexity: O(?)
* Space Complexity: O(?)
*/
public class Problem{Number}{Title} {
public ReturnType methodName(InputType param) {
// Implementation
}
}
2. 最佳实践
以面试为目标进行优化:
- 首先编写整洁、易读的代码
- 仅为复杂逻辑添加注释
- 使用有意义的变量名
- 明确处理边界情况
常见模式:
- 双指针:
left、right或i、j - 滑动窗口:
start、end - 二分查找:
lo、hi、mid - DFS/BFS:使用带有明确类型的 Stack/Queue
优先使用的数据结构:
- 大小可变时,使用
List<>替代数组 - 使用
HashMap<>实现 O(1) 查找 - 使用
HashSet<>检查唯一性 - 使用
PriorityQueue<>执行堆操作 - 使用
Deque<>灵活地实现栈/队列
3. 性能指南
时间复杂度目标:
- 数组问题:目标为 O(n) 或 O(n log n)
- 字符串问题:使用 HashMap/数组计数,目标为 O(n)
- 树问题:O(n) 遍历通常是最优的
- 图问题:BFS/DFS 的复杂度为 O(V + E)
空间优化:
- 尽可能原地修改输入
- 使用位运算处理布尔数组
- 考虑使用迭代而非递归,以达到 O(1) 空间复杂度
4. 测试方法
包含测试用例:
// In test class
@Test
public void testBasicCase() {
Problem{Number}{Title} solution = new Problem{Number}{Title}();
assertEquals(expected, solution.methodName(input));
}
@Test
public void testEdgeCase() {
// Test empty input, null, single element, etc.
}
5. 应避免的常见错误
- 整数溢出:大数值求和时使用
long - 数组索引越界:检查
i < arr.length - 空指针:验证输入
- 差一错误:仔细检查循环边界
- 可变与不可变:谨慎处理引用
6. Java 专属提示
实用方法:
// String
s.charAt(i), s.substring(i, j), s.toCharArray()
// Collections
Collections.sort(list), Collections.reverse(list)
Arrays.sort(arr), Arrays.fill(arr, val)
// Math
Math.max(a, b), Math.min(a, b), Math.abs(x)
// Queue/Stack
queue.offer(), queue.poll(), queue.peek()
stack.push(), stack.pop(), stack.peek()
用于排序的 Lambda 表达式:
Arrays.sort(intervals, (a, b) -> a[0] - b[0]);
PriorityQueue<int[]> pq = new PriorityQueue<>((a, b) -> a[0] - b[0]);
示例工作流
- 阅读问题,从 leetcode_java/ 中选择,或创建新文件
- 识别模式(双指针、滑动窗口、DP 等)
- 使用清晰的变量名编写解法
- 在注释中添加复杂度分析
- 使用示例进行测试,包括边界情况
- 正确解法运行后,按需进行优化
项目专属说明
- Maven 项目:使用
mvn compile构建,使用mvn test测试 - 已配置 JUnit 5 用于测试
- 问题按算法类型组织
- 遵循包中现有的代码风格
评论
支持 Markdown