Day 59 of Sharing What I’ve Learned 🚀 Comparator in Java — Custom Sorting Made Easy After learning how Map stores key-value pairs, I explored something powerful — controlling how data is sorted using Comparator. 👉 Default sorting is useful… but real-world problems need custom logic 🔹 What is Comparator? Comparator is an interface in Java used to define custom sorting logic. 👉 It allows us to sort objects based on our own rules 🔹 How does Comparator work? 👉 We override compare(a, b) method 👉 Returns: ✔ Negative → a comes before b ✔ Zero → both are equal ✔ Positive → a comes after b 🔹 Why use Comparator? ✔ Custom sorting logic ✔ Multiple sorting options ✔ Works without modifying the original class 🔹 Real-World Use Cases 👉 Sorting students by marks 👉 Sorting employees by salary 👉 Sorting products by price or rating 🔹 Key Features ✔ External sorting logic (separate from class) ✔ Can create multiple comparators ✔ Works with Collections.sort() & Arrays.sort() 🔹 Comparator vs Comparable 👉 Comparable = default/internal sorting 👉 Comparator = custom/external sorting 🔹 When should we use Comparator? 👉 Use it when: ✔ You need multiple ways to sort data ✔ You don’t want to modify the class ✔ You need dynamic sorting logic 🔹 When NOT to use? ❌ When only one natural sorting is enough ❌ When simple primitive sorting is required 🔹 Key Insight 💡 Sorting is not just arranging data… 👉 It’s about organizing data based on needs 🔹 Day 59 Realization 🎯 Good developers don’t just sort data… 👉 They decide how it should be sorted #Java #Comparator #DataStructures #CollectionsFramework #Programming #DeveloperJourney #100DaysOfCode #Day59 Grateful for guidance from, TAP Academy Sharath R kshitij kenganavar
Java Comparator Custom Sorting Made Easy
More Relevant Posts
-
Day 61 of Sharing What I’ve Learned🚀 Collections Utility Class in Java — Powerful Helpers for Data Manipulation After learning how sorting works using Comparable and Comparator, I explored something that makes working with collections even easier — the Collections utility class. 👉 Instead of writing logic from scratch… Java already gives us ready-made tools 🔹 What is Collections class? Collections is a utility class in Java that provides static methods to operate on collection objects. 👉 It works with List, Set, and more 👉 No need to create objects — just use methods directly 🔹 Commonly Used Methods ✔ sort() → Sorts elements ✔ reverse() → Reverses order ✔ shuffle() → Randomly shuffles elements ✔ min() / max() → Finds smallest & largest ✔ frequency() → Counts occurrences ✔ binarySearch() → Searches efficiently (on sorted list) 🔹 Why use Collections? ✔ Saves time (no need to write logic manually) ✔ Improves readability ✔ Optimized and efficient ✔ Reduces bugs 🔹 Real-World Use Cases 👉 Sorting student records 👉 Finding highest salary 👉 Randomizing quiz questions 👉 Searching data quickly 👉 Counting duplicates 🔹 Key Features ✔ Works with existing collections ✔ Provides static utility methods ✔ Supports Comparable & Comparator ✔ Part of Java Collections Framework 🔹 Collections vs Collection 👉 Collection = Interface (data structure) 👉 Collections = Utility class (helper methods) 🔹 When should we use it? 👉 Use when: ✔ You want ready-made operations ✔ You need optimized algorithms ✔ You want cleaner code 🔹 Day 61 Insight 💡 Don’t reinvent the wheel… 👉 Java already gives powerful tools — learn to use them effectively 🔹 Day 61 Realization 🎯 Writing less code doesn’t mean doing less work… 👉 It means using smarter tools #Java #Collections #DataStructures #CollectionsFramework #Programming #DeveloperJourney #100DaysOfCode #Day61 Grateful for guidance from, TAP Academy Sharath R kshitij kenganavar
To view or add a comment, sign in
-
-
Day 60 of Sharing What I’ve Learned 🚀 Comparable in Java — Defining Natural Sorting After learning how Comparator gives us custom sorting flexibility, I explored the foundation of sorting in Java — Comparable. 👉 Before customizing sorting… we should understand the default behavior 🔹 What is Comparable? Comparable is an interface in Java used to define natural (default) sorting of objects. 👉 It is implemented inside the class itself 🔹 How does Comparable work? 👉 We override compareTo() method 👉 Returns: ✔ Negative → current object comes before another ✔ Zero → both are equal ✔ Positive → current object comes after another 🔹 Why use Comparable? ✔ Defines default sorting behavior ✔ Simple and clean for single sorting logic ✔ Automatically used by sorting methods 🔹 Real-World Use Cases 👉 Sorting students by ID 👉 Sorting employees by name 👉 Sorting products by default price 🔹 Key Features ✔ Internal sorting logic (inside class) ✔ Only one sorting logic per class ✔ Works with Collections.sort() & Arrays.sort() 🔹 Comparable vs Comparator 👉 Comparable = internal / natural sorting 👉 Comparator = external / custom sorting 🔹 When should we use Comparable? 👉 Use it when: ✔ You need a single default sorting ✔ Sorting logic is fixed ✔ Natural ordering makes sense 🔹 When NOT to use? ❌ When multiple sorting logics are needed ❌ When sorting logic may change dynamically 🔹 Key Insight 💡 Before customizing everything… 👉 Always define a strong default behavior 🔹 Day 60 Realization 🎯 Great developers don’t just customize sorting… 👉 They design a meaningful default order first #Java #Comparable #DataStructures #CollectionsFramework #Programming #DeveloperJourney #100DaysOfCode #Day60 Grateful for guidance from, TAP Academy Sharath R kshitij kenganavar
To view or add a comment, sign in
-
-
🚀 Exploring the Collection Framework in Java Ever wondered how Java efficiently manages large amounts of data? 🤔 Recently, I stepped into the Collection Framework—a powerful concept used for handling data effectively. 🔍 What is the Collection Framework? It is a collection of classes and interfaces that help in storing, manipulating, retrieving, and processing data easily. 💡 Why use it? ✔ Easy to store data ✔ Easy to manipulate ✔ Easy to retrieve ✔ Easy to process 📌 Core Interfaces: • List • Set • Map 🔗 Started with List Interface: Explored implementations like: • ArrayList • LinkedList • ArrayDeque • PriorityQueue 📊 What I analyzed: • Usage • Initial capacity • Heterogeneous data support ➡️ Then explored: • Insertion order • Duplicates • Null handling ➡️ Also looked into: • Constructors • Internal structure • Hierarchy 🔄 Ways to Access Elements: • For loop • For-each loop ➡️ Advanced ways: • Iterator • ListIterator 👉 Key Difference: Iterator moves only forward, whereas ListIterator supports both forward and backward traversal. 🌍 Real-Life Use Case: Imagine building a student management system 📚 • Use ArrayList to store and display student records • Use LinkedList for frequent insertions/deletions • Use PriorityQueue for priority-based processing 💡 Key Takeaway: Choosing the right data structure depends on the use case and performance requirements. 💻 Mini Code Example: import java.util.*; public class Demo { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("Java"); list.add("Python"); for(String lang : list) { System.out.println(lang); } } } ✨ Special thanks to Sharath R for the clear and practical explanation! TAP Academy Bibek Singh #Java #Collections #CollectionFramework #ArrayList #LinkedList #DataStructures #OOP #Programming #FullStackDevelopment #LearningJourney #Coding #Developer #TapAcademy
To view or add a comment, sign in
-
-
Day 58 of Sharing What I’ve Learned 🚀 Map in Java — Storing Data as Key-Value Pairs After learning how PriorityQueue processes elements based on priority, I explored another powerful concept — Map. 👉 It doesn’t store just values… it connects keys with values 🔹 What is a Map? Map is a part of the Java Collections Framework that stores data in key-value pairs. 👉 Each key is unique and maps to a value 🔹 How does Map work? 👉 Data is stored as (key → value) 👉 Keys must be unique 👉 Values can be duplicated ✔ put() → adds key-value pair ✔ get() → retrieves value using key ✔ remove() → deletes entry ✔ containsKey() → checks key existence 🔹 Types of Map ✔ HashMap → Fast, unordered ✔ LinkedHashMap → Maintains insertion order ✔ TreeMap → Sorted by keys 🔹 Why use Map? ✔ Fast lookup using keys ✔ Efficient data organization ✔ Useful for real-world mappings 🔹 Real-World Use Cases 👉 Storing student data (ID → Name) 👉 Caching systems 👉 Frequency counting 👉 Database indexing 🔹 Key Features ✔ No duplicate keys ✔ Allows one null key (HashMap) ✔ Not synchronized (HashMap) ✔ Faster retrieval compared to lists 🔹 When should we use Map? 👉 Use it when: ✔ You need fast lookup by key ✔ You want structured data (pair format) ✔ You need efficient searching 🔹 When NOT to use? ❌ When you only need a list of values ❌ When order matters strictly (use LinkedHashMap/TreeMap carefully) 🔹 Key Insight 💡 Map is not about storing data… 👉 It’s about connecting data 🔹 Day 58 Realization 🎯 Efficient programs don’t just store values… 👉 They organize relationships between them #Java #Map #HashMap #DataStructures #CollectionsFramework #Programming #DeveloperJourney #100DaysOfCode #Day58 Grateful for guidance from, Sharath R TAP Academy kshitij kenganavar
To view or add a comment, sign in
-
-
🚀 Day 56 & 57 – Mastering Maps in Java | Tap Academy Diving deeper into the Java Collections Framework, I explored one of the most powerful concepts — Maps, especially HashMap, LinkedHashMap, and TreeMap. 🔹 Day 56 Highlights – HashMap Understood how Map stores data in key–value pairs Learned internal working: Hashing (Hash Table + Hash Function) Explored default capacity (16) and load factor (75%) Practiced key features: ✔ No duplicate keys ✔ Allows null values ✔ Heterogeneous data support ✔ Fast operations → O(1) 💻 Implemented important methods: put(), get(), containsKey(), containsValue(), entrySet(), keySet(), values() 🔁 Learned how to iterate using: entrySet() (Map → Set conversion) Iterator (cursor-based access) 🔹 Day 57 Highlights – LinkedHashMap & TreeMap 📌 LinkedHashMap Maintains insertion order Same features as HashMap but ordered output 📌 TreeMap Stores data in sorted order (ascending by keys) Uses Tree structure (Red-Black Tree) No null keys allowed Slightly slower → O(log n) 📊 Comparison Insight HashMap → Fastest, no order ⚡ LinkedHashMap → Maintains insertion order 📌 TreeMap → Sorted order 🔄 🎯 Key takeaway: Choosing the right data structure matters based on requirement — speed, order, or sorting. 🎯 This journey is strengthening my problem-solving skills and deepening my understanding of how real-world data is handled efficiently. #Java #CollectionsFramework #HashMap #LinkedHashMap #TreeMap #DataStructures #FullStackJava #TapAcademy #LearningJourney 🚀
To view or add a comment, sign in
-
-
☕ Learn Java with Me — Day 17 After understanding variables and memory, today we’re learning a very useful concept in Java 💻 👉 Type Casting & Type Conversion This is important not just for learning, but also from an interview and coding perspective 🎯 👉 What is Type Conversion? Type conversion means converting one data type into another. Example: int num = 10; double value = num; Here, int is automatically converted into double. This is called: 👉 Implicit Type Casting / Widening Why? Because Java converts a smaller data type into a bigger one automatically. Example: int → double No data loss 🚀 👉 Explicit Type Casting / Narrowing Sometimes we manually convert a bigger type into a smaller type. Example: double price = 99.99; int amount = (int) price; Output: 99 Here, decimal part gets removed. This is called: 👉 Explicit Type Casting Because we are forcing the conversion manually. 📌 Easy trick to remember: Small → Big = automatic Big → Small = manual ❓ Quick Question: What will be the output? double num = 12.8; int x = (int) num; System.out.println(x); We’re learning deeper — together 🤝 #java #coding #learning #interviewprep #showup #day17 #primitivetypecasting
To view or add a comment, sign in
-
-
Day 41 of Learning Java: Method Overriding If method overloading was about flexibility,method overriding is about customization. What is Method Overriding? It’s when a subclass provides its own implementation of a method that is already defined in the parent class. Same method name. Same parameters. But different behavior. 🔹 Simple example- class Parent { void watchTV() { System.out.println("Watching News/Serial"); } } class Child extends Parent { @Override void watchTV() { System.out.println("Watching Music/Sports"); } } Same method → different output depending on the object. • Parent defines a general behavior • Child modifies it based on its own need • This helps in writing more flexible and reusable code 🔹 Key points to remember • Method signature must be the same • Happens during runtime (runtime polymorphism) • Inheritance is required 👉 You cannot override: static methods private methods final methods 🔹 One important concept Parent ref = new Child(); ref.watchTV(); Even though the reference is of Parent, the method of Child gets executed. 👉 This is called dynamic method dispatch 🔹 About @Override It’s not mandatory, but it helps: ✔ Avoid mistakes ✔ Makes code more readable ✔ Ensures you’re actually overriding #Java #OOP #MethodOverriding #LearningInPublic #Programming#sql #branding
To view or add a comment, sign in
-
-
Day 37 of learning Java! Today I learned about Lambda Expressions, Functional Interfaces & Comparator 🔹 Why Lambdas? ✔ Java shifted towards functional programming ✔ Now we can pass behavior (functions) directly ✔ Earlier problem: • Needed full classes just for small logic • Too much boilerplate 🔹 Functional Interface ✔ Interface with only ONE abstract method ✔ Why important? → Enables lambda expressions ✔ Short way to write functions Forms: • (a, b) → a + b • x → x * x • () → some action • Multi-line → use {} 🔹 Key Concept: Target Typing ✔ Java automatically understands: • parameter types • return type → Based on context 🔹 Comparator Interface ✔ Used for custom sorting ✔ Unlike Comparable: • Comparable → fixed logic • Comparator → flexible logic ✔ Example use: • Sort by name • Sort by marks • Sort by roll number 🔹 Lambdas with Comparator ✔ Cleaner sorting logic ✔ No need for anonymous classes → Makes code shorter & readable 🔹 Old vs New Approach Old: • Anonymous classes • Verbose New (Lambda): • Concise • Readable • Functional style special thanks to Aditya Tandon Rohit Negi sir
To view or add a comment, sign in
-
-
🚀 TreeSet in Java Collections Continuing my journey in Set-based collections, I explored TreeSet, which introduces sorting + uniqueness in data storage. 🔹 What is TreeSet? TreeSet is a class in Java Collections Framework that stores unique elements in sorted order By default, it follows natural ordering (ascending order) 🔹 Key Properties ✅ Maintains sorted order (ascending by default) ❌ Does not allow duplicates ❌ Does not allow null values ⚠️ Heterogeneous data allowed only if Comparator is provided Implements SortedSet & NavigableSet 🔹 Internal Working Uses Balanced Binary Search Tree (Red-Black Tree) Automatically keeps elements sorted 👉 Sorting is based on: Comparable (natural sorting) Comparator (custom sorting) 🔹 Constructors TreeSet() TreeSet(Comparator c) TreeSet(Collection c) TreeSet(SortedSet s) 🔹 Important Methods add(E e) remove(Object o) contains(Object o) first() → smallest element last() → largest element headSet(E e) → elements < e tailSet(E e) → elements ≥ e subSet(from, to) → range ceiling(E e) → smallest ≥ e size() 🔹 Traversal (Accessing Elements) For-each loop Iterator Stream API ❌ No indexing ❌ No ListIterator 🔹 Performance Add / Remove / Search → O(log n) Slower than HashSet (because of sorting) 🔹 TreeSet vs HashSet vs LinkedHashSet HashSet → No order LinkedHashSet → Insertion order TreeSet → Sorted order 👉 TreeSet is best when: Sorted data is required Range-based operations are needed 🔹 When to Use TreeSet? When sorted output is required When working with range queries When needing ordered traversal automatically 🔹 Learning Outcome Strong understanding of sorted collections Clear difference between HashSet vs LinkedHashSet vs TreeSet Knowledge of Comparable vs Comparator Ability to choose correct Set implementation 🙌 Special thanks to the amazing trainers at TAP Academy: kshitij kenganavar Sharath R MD SADIQUE Bibek Singh Vamsi yadav Hemanth Reddy Harshit T Ravi Magadum Somanna M G Rohit Ravinder TAP Academy Grateful to Tap Academy for strengthening my Java and data structure foundations 🚀 #TapAcademy #Week13Learning #CoreJava #CollectionsFramework #TreeSet #HashSet #LinkedHashSet #DataStructures #JavaFundamentals #LearningByDoing #FullStackJourney #VamsiLearns
To view or add a comment, sign in
-
-
Day 62 of Sharing What I’ve Learned🚀 Iterator in Java — Safe and Efficient Traversal After understanding how collections store and organize data, I revisited an important concept — how to safely traverse them using Iterator. 👉 Accessing data is easy… but doing it correctly and safely matters more. 🔹 What is an Iterator? Iterator is an interface in Java used to traverse elements of a collection one by one. 👉 It provides a standard way to loop through: ArrayList HashSet LinkedList And more… 🔹 Why not just use a for loop? Using a normal loop works… but it has limitations: ❌ Not safe when modifying collection ❌ Can lead to ConcurrentModificationException ❌ Not universal for all collection types 👉 That’s where Iterator comes in ✔ 🔹 Key Methods of Iterator hasNext() → checks if next element exists next() → returns the next element remove() → removes the current element safely 🔹 Example import java.util.*; public class Main { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("Java"); list.add("Python"); list.add("C++"); Iterator<String> it = list.iterator(); while(it.hasNext()) { String lang = it.next(); System.out.println(lang); } } } 🔹 Real Advantage 💡 👉 Removing elements while iterating: Iterator<String> it = list.iterator(); while(it.hasNext()) { if(it.next().equals("Python")) { it.remove(); // Safe removal } } ✔ No errors ✔ Clean logic ✔ Interview-friendly concept 🔹 Day 62 Realization Traversing data is not just about loops — it’s about doing it safely and efficiently. 👉 Iterator provides better control and prevents runtime issues 👉 Essential when working with dynamic collections #Java #Collections #DataStructures #CollectionsFramework #Iterator #Programming #DeveloperJourney #100DaysOfCode #Day61 Grateful for guidance from, TAP Academy Sharath R kshitij kenganavar
To view or add a comment, sign in
-
Explore content categories
- Career
- Productivity
- Finance
- Soft Skills & Emotional Intelligence
- Project Management
- Education
- Technology
- Leadership
- Ecommerce
- User Experience
- Recruitment & HR
- Customer Experience
- Real Estate
- Marketing
- Sales
- Retail & Merchandising
- Science
- Supply Chain Management
- Future Of Work
- Consulting
- Writing
- Economics
- Artificial Intelligence
- Employee Experience
- Workplace Trends
- Fundraising
- Networking
- Corporate Social Responsibility
- Negotiation
- Communication
- Engineering
- Hospitality & Tourism
- Business Strategy
- Change Management
- Organizational Culture
- Design
- Innovation
- Event Planning
- Training & Development