Skip to content

Latest commit

 

History

History
139 lines (97 loc) · 7.04 KB

File metadata and controls

139 lines (97 loc) · 7.04 KB

Java Fundamentals Proyect

Repository dedicated to demonstrating technical mastery of Java (SE) fundamentals,
focusing on best practices, clean code, and performance. :octocat:


Note

In this proyect, my objetive is to learn while i code until i dominate all the fundamentals of Java.
I have created milestones and issues for all the pending tasks in this repository.
I would appreciate any advice or recommendations on how to expand both my knowledge and my portfolio in this area.

Thanks in advance! :shipit::shipit::shipit:💖


01 | Basics

Essential concepts of Java

File Content
Variables.java Declaration, initialization, constants (final), casting, variable scope
DataTypes.java Primitive types (byte, short, int, long, float, double, char, boolean) and String
Operators.java Arithmetic, relational, logical, assignment, and ternary operators
ControlFlow.java if/else, switch (classic and expression), for, for-each, while, do-while, break/continue
Arrays.java One-dimensional arrays and matrices (2D), iteration, sorting, searching
Methods.java Methods, parameters, overloading, recursion, varargs

02 | Object-Oriented Programming (OOP)

The pillars of OOP in Java, with independent and executable examples

File Concept Content
Classes.java Classes and objects Attributes, constructor, this, methods
Encapsulation.java Encapsulation Private attributes, getters/setters, internal state protection
Inheritance.java Inheritance extends, super, code reusability, @Override
Polymorphism.java Polymorphism Dynamic dispatch, superclass references pointing to subclasses
Interfaces.java Interfaces Contracts, multiple interfaces, default methods, lambdas
AbstractClasses.java Abstract classes Abstract vs. concrete methods, non-instantiable

03 | Collections (Java Collections Framework)

Standard data structures for storing and manipulating groups of objects

File Content
ListsExample.java ArrayList and LinkedList: add, insert, remove, iterate / traverse
SetsExample.java HashSet (no duplicates, unordered) and TreeSet (sorted)
MapsExample.java HashMap and TreeMap: key-value pairs, getOrDefault, iteration / traversal
ComparatorsExample.java Comparable (natural ordering) vs. Comparator (external/custom ordering)

04 | Exception Handling

Managing runtime errors in a controlled manner

File Content
ExceptionHandling.java try/catch/finally, multiple catch blocks, common exceptions (ArithmeticException, NullPointerException, etc.)
CustomExceptions.java Custom exceptions: checked (extends Exception) vs. unchecked (extends RuntimeException)
TryWithResources.java Automatic resource management using try-with-resources and AutoCloseable

05 | Lambdas and Streams (Modern Java)

Functional programming (introduced in Java 8+), lambda expressions and the Streams API

File Content
LambdasBasics.java Functional interfaces: Function, BiFunction, Predicate, Supplier, Runnable, method references
StreamsBasics.java filter, map, forEach, collect, count, anyMatch, allMatch
AdvancedStreams.java reduce, groupingBy, sorted with Comparator, statistics, IntStream

06 | Algorithms

Clear and fully commented implementations of the algorithms that appear most often in classic programming problems

Sorting

File Algorithm Complexity
BubbleSort.java Bubble Sort O(n²)
QuickSort.java Quick Sort (divide and conquer) O(n log n) average
MergeSort.java Merge Sort (stable) O(n log n) guaranteed

Search

File Algorithm Complexity
BinarySearch.java Binary Search (iterative and recursive) O(log n)

Recursion

File Algorithm Complexity
Fibonacci.java Fibonacci: recursive, memoized, and iterative O(2ⁿ) / O(n) / O(n)
Factorial.java Factorial: recursive and iterative O(n)

Dynamic Programming

File Algorithm Complexity
Knapsack01.java 0/1 Knapsack Problem O(n × capacity)
LongestCommonSubsequence.java Longest Common Subsequence (LCS) O(n × m)

Graphs

File Algorithm Complexity
BFS.java Breadth-First Search (queue-based) O(V + E)
DFS.java Depth-First Search (recursive and iterative) O(V + E)

Classic Algorithms

File Algorithm Description
FizzBuzz.java FizzBuzz The classic screening filter
PrimeNumbers.java Prime Verification + Sieve of Eratosthenes O(√n) and O(n log log n)
Palindrome.java Palindrome Check (two pointers approach) O(n)
ReverseString.java Reverse a String (manual and recursive) O(n)
TwoSum.java Two Sum: brute force vs. HashMap O(n²) vs. O(n)

꧁⎝ ON PROCESS 😄 ⎠꧂

Important

If someone has more ideas to expand my project I will apreciate it! :p
I’ll keep adding more things and learning as I continue working on this repository ^^