This document analyzes all Java problems and solutions found in the codebase, categorized by topic and complexity level.
Location: org.mjtech.stream.CollectList
-
Group Strings by Length -
CollectList:34-36- Uses
Collectors.groupingBy(String::length) - Pattern: Basic grouping with method reference
- Uses
-
Find Duplicate Cities -
CollectList:42-48- Uses
groupingBy+counting+ filter - Pattern: Count-based filtering for duplicates
- Uses
-
Reverse All Strings -
CollectList:54-57- Uses
StringBuilder.reverse() - Pattern: String manipulation in streams
- Uses
-
Sum of Even Numbers -
CollectList:64-67- Uses
filter+mapToInt+sum - Pattern: Numeric filtering and aggregation
- Uses
-
Convert to Uppercase -
CollectList:74-76- Uses
map(String::toUpperCase) - Pattern: Simple transformation
- Uses
-
Find Maximum Number -
CollectList:83-85- Uses
max(Comparator.comparing()) - Pattern: Aggregation with comparator
- Uses
-
Count Strings Starting with 'A' -
CollectList:92-94- Uses
filter+count - Pattern: Counting with predicate
- Uses
-
Filter and Sort Above Threshold -
CollectList:102-105- Uses
filter+sorted - Pattern: Multi-step filtering and sorting
- Uses
-
Character Frequency Count -
CollectList:112-116- Uses
chars()+groupingBy+counting - Pattern: Character-level analysis
- Uses
-
Find Distinct Elements -
CollectList:123- Uses
distinct() - Pattern: Deduplication
- Uses
-
Calculate Average -
CollectList:131-133- Uses
mapToInt+average - Pattern: Numeric aggregation
- Uses
-
Check All Numbers Positive -
CollectList:141- Uses
allMatch - Pattern: Universal quantification
- Uses
-
Check Any Number Negative -
CollectList:149- Uses
anyMatch - Pattern: Existential quantification
- Uses
-
Check None Are Even -
CollectList:157- Uses
noneMatch - Pattern: Negative quantification
- Uses
-
Check All Numbers Even -
CollectList:165- Uses
allMatchwith modulo - Pattern: Property verification
- Uses
-
Get First N Elements -
CollectList:173- Uses
limit - Pattern: Result limiting
- Uses
-
Average Salary by Department -
CollectList:201-203- Uses
groupingBy+averagingDouble - Pattern: Grouping with aggregation
- Uses
-
Top N Highest Paid Employees -
CollectList:211-214- Uses
sorted+limit - Pattern: Ranking and limiting
- Uses
-
Department with Highest Total Salary -
CollectList:222-226- Uses
groupingBy+summingDouble+max - Pattern: Group aggregation with comparison
- Uses
-
Partition Employees by Age -
CollectList:234-247- Uses
partitioningBy - Pattern: Binary classification
- Uses
-
Find Duplicate Salaries -
CollectList:252-258- Uses
groupingBy+counting+ filtering - Pattern: Duplicate detection in numeric data
- Uses
-
Word Length Analysis -
CollectList:268-272- Uses
groupingBy(String::length)+counting - Pattern: Text analysis and statistics
- Uses
-
Longest Word per Sentence -
CollectList:282-290- Uses
max(Comparator.comparingInt(String::length)) - Pattern: Maximum finding with custom comparison
- Uses
-
Find Palindromes -
CollectList:297-300- Uses
filterwithStringBuilder.reverse() - Pattern: Complex string validation
- Uses
-
Second Largest Element -
CollectList:310-318- Uses
distinct+sorted+skip+findFirst - Pattern: Nth element finding
- Uses
-
String Compression -
CollectList:325-367- Uses
IntStream.rangewith complex logic - Pattern: Advanced string manipulation
- Uses
-
Multi-level Grouping Analysis -
CollectList:383-389- Complex grouping and filtering with
HashSet.containsAll - Pattern: Set operations with streams
- Complex grouping and filtering with
-
Moving Average Calculation -
CollectList:400-402- Uses
IntStream.range+skip+limit - Pattern: Sliding window operations
- Uses
Location: org.mjtech.string.StringFreq, org.mjtech.pcl.JavaQA
-
Character Frequency Count -
StringFreq:5-32- Manual loop-based approach
- Pattern: Traditional iteration with counting
-
Number-based String Expansion -
StringFreq:34-65- Complex parsing of character-number patterns
- Pattern: String parsing and reconstruction
-
Stream-based Character Frequency -
JavaQA:24-35- Uses
chars()+groupingBy+counting - Pattern: Modern stream approach for frequency analysis
- Uses
-
Traditional HashMap Frequency -
JavaQA:10-22- Manual HashMap with
getOrDefault - Pattern: Traditional frequency counting
- Manual HashMap with
Location: org.mjtech.bnp
-
Method Overloading -
CoreJavaQA:13-29- Demonstrates method overloading with different parameter types
- Pattern: Polymorphism and type resolution
-
Employee Salary Analysis -
CoreJavaQA:32-51- Department-wise salary aggregation
- Age-based filtering
- Salary sorting
- Pattern: Business logic with streams
-
Singleton Pattern -
SingleTonSource:1-24- Eager initialization singleton
- Pattern: Design pattern implementation
Location: org.mjtech.number.NumberSort, org.mjtech.tvs.Problem
-
Digit Sorting in Numbers -
NumberSort:7-28- Converts number to char array and sorts
- Pattern: Number-to-string-to-array conversion
-
Duplicate Separation -
Problem:23-80- Two approaches: HashMap-based (O(n)) and nested loop (O(n²))
- Pattern: Efficiency comparison and optimization
Location: org.mjtech.incedo.Problem
- Top 3 Technologies by Score -
Problem:24- Uses
entrySet().stream()+sorted+limit+map+joining - Pattern: Map processing with ranking
- Uses
- Filtering:
filter(predicate) - Mapping:
map(function),mapToInt(),mapToDouble() - Collecting:
collect(Collectors.toList()),collect(Collectors.groupingBy()) - Aggregating:
sum(),average(),count(),max(),min() - Sorting:
sorted(),sorted(comparator) - Limiting:
limit(n),skip(n) - Matching:
allMatch(),anyMatch(),noneMatch() - Grouping:
groupingBy(),partitioningBy() - Advanced Collecting:
summingDouble(),averagingDouble(),counting()
- Lists: ArrayList, LinkedList operations
- Maps: HashMap for frequency counting and grouping
- Sets: HashSet for duplicate detection
- Records: Modern Java data classes (Employee, Transaction)
- Traditional Classes: POJO with getters/setters
- Two-pointer technique: String compression
- Sliding window: Moving averages
- Frequency counting: Character and element analysis
- Sorting algorithms: Built-in sort with custom comparators
- Set operations: Union, intersection for complex filtering
- O(n) vs O(n²): HashMap approach vs nested loops
- Stream efficiency: Parallel streams consideration
- Memory usage: StringBuilder vs String concatenation
- Lazy evaluation: Stream operations are lazy until terminal operation
- Basic stream operations
- Simple filtering and mapping
- Direct aggregations
- Single-step transformations
- Multi-step stream chains
- Complex grouping operations
- Custom comparators
- String processing with multiple operations
- Multi-level grouping and filtering
- Complex business logic implementation
- Performance optimization considerations
- Advanced stream patterns
- Most problems include
mainmethods with sample data - Output verification through console printing
- Edge case handling (null checks, empty collections)
- Multiple solution approaches for comparison
- Method references:
String::length,Employee::getSalary - Lambda expressions:
(x, y) -> x.compareTo(y) - Null safety: Null checks before processing
- Immutability: Using records and final variables
- Separation of concerns: Utility methods for complex operations
- Code readability: Clear variable names and method structures