Java 8 coding questions:
Problem | Solution |
---|---|
Separate Odd and Even Numbers | listOfIntegers.stream().collect(Collectors.partitioningBy(number -> number % 2 == 0)); |
Remove Duplicates from List | listOfStrings.stream().distinct().toList(); |
Character Frequency in String | input.chars().mapToObj(c -> (char) c).collect(Collectors.groupingBy(ch -> ch, Collectors.counting())); |
Frequency of Array Elements | list.stream().collect(Collectors.groupingBy(element -> element, Collectors.counting())); |
Sort List in Reverse | list.sort(Comparator.reverseOrder()); list.forEach(System.out::println); |
Join Strings with Prefix/Suffix | list.stream().collect(Collectors.joining("-", "Start-", "-End")); |
Filter Multiples of 5 | list.stream().filter(number -> number % 5 == 0).forEach(System.out::println); |
Merge Arrays and Sort | IntStream.concat(Arrays.stream(arr1), Arrays.stream(arr2)).sorted().toArray(); |
Merge and Remove Duplicates | IntStream.concat(Arrays.stream(arr1), Arrays.stream(arr2)).distinct().sorted().toArray(); |
Find Top 3 Minimum Values | list.stream().sorted().limit(3).toList(); |
Find Top 3 Maximum Values | list.stream().sorted(Comparator.reverseOrder()).limit(3).toList(); |
Sort Strings by Length | list.stream().sorted(Comparator.comparing(String::length)).forEach(System.out::println); |
Sum and Average of Array | int sum = Arrays.stream(inputArray).sum(); double average = Arrays.stream(inputArray).average().orElse(0); |
Reverse Integer Array | IntStream.range(0, arr.length).map(i -> arr[arr.length - 1 - i]).toArray(); |
Check Palindrome | boolean isPalindrome = IntStream.range(0, str.length() / 2).noneMatch(i -> str.charAt(i) != str.charAt(str.length() - i - 1)); |
Find Second Largest Number | list.stream().sorted(Comparator.reverseOrder()).skip(1).findFirst().orElseThrow(); |
Common Elements Between Arrays | list1.stream().filter(list2::contains).toList(); |
Reverse Words in String | Arrays.stream(str.split(" ")).map(word -> new StringBuilder(word).reverse().toString()).collect(Collectors.joining(" ")); |
Find Strings Starting with Numbers | list.stream().filter(s -> Character.isDigit(s.charAt(0))).toList(); |
Sum of Digits in Number | String.valueOf(input).chars().map(Character::getNumericValue).sum(); |
Last Element of List | list.get(list.size() - 1); |
Age from Birth Year | Period.between(LocalDate.of(1985, 1, 23), LocalDate.now()).getYears(); |
Fibonacci Series | Stream.iterate(new int[]{0, 1}, fib -> new int[]{fib[1], fib[0] + fib[1]}).limit(10).map(fib -> fib[0]).toList(); |
This table properly structures the Java 8 coding problems with their corresponding solutions. Let me know if you need any modifications!
Java 8 Coding Interview Questions and Answers
This document contains a collection of Java 8 coding interview questions along with their answers. These questions focus on key Java 8 features such as Streams, Lambda Expressions, Functional Interfaces, and Method References.
1. Filtering a List and Summing Even Numbers using Streams
Question: Given a list of integers, write a Java 8 program to filter out even numbers and calculate their sum.
Answer:
import java.util.Arrays;
import java.util.List;
public class SumOfEvenNumbers {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
int sum = numbers.stream()
.filter(n -> n % 2 == 0) // Filter even numbers
.mapToInt(Integer::intValue) // Convert to IntStream
.sum(); // Calculate sum
System.out.println("Sum of even numbers: " + sum);
}
}
Output:
Sum of even numbers: 30
2. Sorting a List of Strings in Ascending and Descending Order
Question: Write a Java 8 program to sort a list of strings in both ascending and descending order.
Answer:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class SortStrings {
public static void main(String[] args) {
List<String> names = Arrays.asList("John", "Alice", "Bob", "Charlie");
// Ascending order
List<String> ascendingOrder = names.stream()
.sorted()
.collect(Collectors.toList());
// Descending order
List<String> descendingOrder = names.stream()
.sorted((s1, s2) -> s2.compareTo(s1))
.collect(Collectors.toList());
System.out.println("Ascending Order: " + ascendingOrder);
System.out.println("Descending Order: " + descendingOrder);
}
}
Output:
Ascending Order: [Alice, Bob, Charlie, John]
Descending Order: [John, Charlie, Bob, Alice]
3. Finding the Maximum and Minimum Values in a List
Question: Write a Java 8 program to find the maximum and minimum values in a list of integers.
Answer:
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
public class MaxMinValues {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(10, 20, 5, 30, 15);
Optional<Integer> max = numbers.stream().max(Integer::compareTo);
Optional<Integer> min = numbers.stream().min(Integer::compareTo);
System.out.println("Max Value: " + max.orElse(0));
System.out.println("Min Value: " + min.orElse(0));
}
}
Output:
Max Value: 30
Min Value: 5
4. Grouping Objects by a Specific Property using Streams
Question: Given a list of Employee
objects, write a Java 8 program to group them by their department.Answer:
import java.util.*;
import java.util.stream.Collectors;
class Employee {
private String name;
private String department;
public Employee(String name, String department) {
this.name = name;
this.department = department;
}
public String getDepartment() {
return department;
}
@Override
public String toString() {
return name;
}
}
public class GroupByDepartment {
public static void main(String[] args) {
List<Employee> employees = Arrays.asList(
new Employee("John", "HR"),
new Employee("Alice", "IT"),
new Employee("Bob", "HR"),
new Employee("Charlie", "IT")
);
Map<String, List<Employee>> groupedByDepartment = employees.stream()
.collect(Collectors.groupingBy(Employee::getDepartment));
System.out.println("Employees grouped by department: " + groupedByDepartment);
}
}
Output:
Employees grouped by department: {HR=[John, Bob], IT=[Alice, Charlie]}
5. Removing Duplicates from a List using Streams
Question: Write a Java 8 program to remove duplicates from a list of integers.
Answer:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class RemoveDuplicates {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 2, 3, 4, 4, 5);
List<Integer> uniqueNumbers = numbers.stream()
.distinct()
.collect(Collectors.toList());
System.out.println("Unique Numbers: " + uniqueNumbers);
}
}
Output:
Unique Numbers: [1, 2, 3, 4, 5]
6. Counting the Frequency of Characters in a String using Streams
Question: Write a Java 8 program to count the frequency of each character in a string.
Answer:
import java.util.Map;
import java.util.stream.Collectors;
public class CharacterFrequency {
public static void main(String[] args) {
String input = "java8";
Map<Character, Long> frequencyMap = input.chars()
.mapToObj(c -> (char) c)
.collect(Collectors.groupingBy(c -> c, Collectors.counting()));
System.out.println("Character Frequency: " + frequencyMap);
}
}
Output:
Character Frequency: {a=2, v=1, j=1, 8=1}
No comments