java-developer
Java Developer
When to use this Skill
Use this Skill when:
- Writing new Java solutions for LeetCode problems
- Implementing data structures or algorithms in Java
- Converting solutions from other languages to Java
- Setting up Java test cases with JUnit
Instructions
1. Code Structure
Follow the project's Java conventions:
- Package structure:
AlgorithmJava,DataStructure,LeetCodeJava - Use Java 8 compatibility features
- Include proper imports and class declarations
- Follow camelCase naming conventions
For LeetCode problems:
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. Best Practices
Optimize for interviews:
- Write clean, readable code first
- Add comments only for complex logic
- Use meaningful variable names
- Handle edge cases explicitly
Common patterns:
- Two pointers:
left,rightori,j - Sliding window:
start,end - Binary search:
lo,hi,mid - DFS/BFS: Use Stack/Queue with explicit types
Data structures to prefer:
List<>instead of arrays when size variesHashMap<>for O(1) lookupsHashSet<>for uniqueness checksPriorityQueue<>for heap operationsDeque<>for stack/queue flexibility
3. Performance Guidelines
Time Complexity Goals:
- Array problems: Aim for O(n) or O(n log n)
- String problems: Aim for O(n) with HashMap/array counting
- Tree problems: O(n) traversal is usually optimal
- Graph problems: O(V + E) for BFS/DFS
Space Optimization:
- Modify input in-place when possible
- Use bit manipulation for boolean arrays
- Consider iterative over recursive for O(1) space
4. Testing Approach
Include test cases:
// 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. Common Mistakes to Avoid
- Integer overflow: Use
longfor large sums - Array index out of bounds: Check
i < arr.length - Null pointer: Validate inputs
- Off-by-one errors: Double-check loop boundaries
- Mutable vs immutable: Be careful with references
6. Java-Specific Tips
Useful methods:
// 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 expressions for sorting:
Arrays.sort(intervals, (a, b) -> a[0] - b[0]);
PriorityQueue<int[]> pq = new PriorityQueue<>((a, b) -> a[0] - b[0]);
Example Workflow
- Read the problem from leetcode_java/ or create new file
- Identify the pattern (two pointers, sliding window, DP, etc.)
- Write the solution with clear variable names
- Add complexity analysis in comments
- Test with examples including edge cases
- Optimize if needed after correct solution works
Project-Specific Notes
- Maven project: Build with
mvn compile, test withmvn test - JUnit 5 is configured for testing
- Problems are organized by algorithm type
- Follow existing code style in the package
More from yennanliu/cs_basics
system-architecture
System design and architecture expert for creating scalable distributed systems. Covers system design interviews, architecture patterns, and real-world case studies like Netflix, Twitter, Uber. Use when designing systems, writing architecture docs, or preparing for system design interviews.
74code-refactor-master
Code refactoring expert for improving code quality, readability, maintainability, and performance. Specializes in Java and Python refactoring patterns, eliminating code smells, and applying clean code principles. Use when refactoring code, improving existing implementations, or cleaning up technical debt.
70markdown-doc-writer
Technical documentation writer specializing in creating clear, well-structured markdown documents for algorithms, system design, interview preparation, and code documentation. Use when writing README files, algorithm explanations, system design docs, or technical guides.
68java-python-code-reviewer
Comprehensive code reviewer for Java and Python implementations focusing on correctness, efficiency, code quality, and algorithmic optimization. Reviews LeetCode solutions, data structures, and algorithm implementations. Use when reviewing code, checking solutions, or providing feedback on implementations.
63