mcpField
J
java-developer

java-developer

github.com/yennanliu开发14057 次安装今天更新
代码仓库

关于 java-developer

java-developer 是面向 Java 解题与算法实现的技能,适用于 LeetCode 练习、语言转换和 JUnit 测试。它提供 Java 8 项目规范、常见算法模式及性能与边界检查建议。

主要功能

  1. 01遵循 Java 8 项目规范
  2. 02提供常见算法模式建议
  3. 03强调复杂度与空间优化
  4. 04指导 JUnit 5 测试
  5. 05提醒 Java 常见错误

适用场景

  1. 01编写 LeetCode Java 解法
  2. 02将其他语言的解法转为 Java
  3. 03实现数据结构与算法
  4. 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]);

示例工作流

  1. 阅读问题,从 leetcode_java/ 中选择,或创建新文件
  2. 识别模式(双指针、滑动窗口、DP 等)
  3. 使用清晰的变量名编写解法
  4. 在注释中添加复杂度分析
  5. 使用示例进行测试,包括边界情况
  6. 正确解法运行后,按需进行优化

项目专属说明

  • Maven 项目:使用 mvn compile 构建,使用 mvn test 测试
  • 已配置 JUnit 5 用于测试
  • 问题按算法类型组织
  • 遵循包中现有的代码风格

评论

支持 Markdown