Skip to main content

Java Interview Question: Find Highest Salary by Department Using Streams (groupingBy Explained)

 

🔹 Introduction

This is a very common Java Streams interview question, especially for backend roles.

👉 It tests your understanding of:

  • groupingBy()
  • maxBy()
  • Comparator

🔹 Problem Statement

Given a list of employees, find the highest salary in each department.


🔹 Example

Input:
IT → 50000, 70000
HR → 40000, 60000

Output:
IT → 70000
HR → 60000

🔹 Approach (Using Java Streams)

💡 Explanation

  1. Group employees by department
  2. Find max salary in each group
  3. Use Collectors.maxBy()

🔹 Employee Class

class Employee {
String name;
String department;
double salary;

public Employee(String name, String department, double salary) {
this.name = name;
this.department = department;
this.salary = salary;
}

public String getDepartment() { return department; }
public double getSalary() { return salary; }
}

🔹 Java Code (Streams Solution)

import java.util.*;
import java.util.stream.*;
import java.util.Comparator;

public class HighestSalary {
public static void main(String[] args) {

List<Employee> employees = Arrays.asList(
new Employee("A", "IT", 50000),
new Employee("B", "IT", 70000),
new Employee("C", "HR", 40000),
new Employee("D", "HR", 60000)
);

Map<String, Optional<Employee>> result =
employees.stream()
.collect(Collectors.groupingBy(
Employee::getDepartment,
Collectors.maxBy(Comparator.comparing(Employee::getSalary))
));

result.forEach((dept, emp) ->
System.out.println(dept + " -> " + emp.get().getSalary()));
}
}

🔹 Output

IT -> 70000
HR -> 60000

🔍 Internal Working (Important for Interviews)

  • groupingBy() → groups by department
  • maxBy() → finds highest salary
  • Comparator.comparing() → compares salary

🔹 Time Complexity

  • O(n)

🔹 Key Takeaways

groupingBy() is very important
maxBy() helps find max values
✔ Real-world interview question


🔹 Conclusion

This is a must-know Java Streams problem for backend developers.
Mastering this will help you crack mid-level interviews.


🔗 Also Read

Comments

Popular posts from this blog

Top Java Interview Question: First Non-Repeating Character in a String

  🔹 Introduction Java interviews often include string-based questions. One of the most commonly asked questions is: 👉 Find the first non-repeating character in a string. In this article, we will solve it step by step in a simple and easy-to-understand way. 🔹 Problem Statement Given a string, find the first character that does not repeat. Example: Input: aabbcde Output: c 🔹 Approach To solve this problem efficiently: Count frequency of each character Maintain insertion order Traverse again to find the first character with frequency = 1 👉 We use LinkedHashMap because: It maintains insertion order Helps us find the first non-repeating character 🔹 Java Code import java . util . *; public class FirstNonRepeating { public static void main ( String [] args ) { String str = "aabbcde" ; Map < Character , Integer > map = new LinkedHashMap <>(); // Count frequency for ( char ch : str . to...

Java Interview Question: Separate Even and Odd Numbers Using Streams (With Examples)

  🔹 Introduction Separating even and odd numbers is a common Java interview question. It helps test your understanding of Java Streams, filtering, and partitioning . 👉 In this article, we will solve this using: Traditional approach Java Streams (modern approach) 🔹 Problem Statement Given a list of integers, separate even and odd numbers. Example: Input: [1, 2, 3, 4, 5, 6] Output: Even: [2, 4, 6], Odd: [1, 3, 5] 🔹 Approach 1: Using Loop (Basic) 💡 Explanation Traverse list Check number % 2 Store in separate lists 👨‍💻 Java Code import java . util . *; public class EvenOdd { public static void main ( String [] args ) { List < Integer > list = Arrays . asList ( 1 , 2 , 3 , 4 , 5 , 6 ); List < Integer > even = new ArrayList <>(); List < Integer > odd = new ArrayList <>(); for ( int num : list ) { if ( num % 2 == 0 ) { even . add ( num )...

Java Interview Question: Check if a String is a Palindrome

 🔹 Introduction String problems are very common in Java interviews. One of the easiest yet frequently asked questions is: 👉 Check whether a given string is a palindrome. Let’s understand how to solve it step by step. 🔹 Problem Statement A string is called a palindrome if it reads the same forward and backward. Example: Input: madam Output: Palindrome Input: hello Output: Not a Palindrome 🔹 Approach 1: Using Two Pointers (Best Method) Start one pointer from the beginning Start another pointer from the end Compare characters If all match → Palindrome 🔹 Java Code (Two Pointer Approach) public class PalindromeCheck { public static void main ( String [] args ) { String str = "madam" ; int left = 0 ; int right = str . length () - 1 ; boolean isPalindrome = true ; while ( left < right ) { if ( str . charAt ( left ) != str . charAt ( right )) { isPalindr...