{"id":30196376,"url":"https://github.com/kruthiksp/java8","last_synced_at":"2025-10-24T12:32:12.209Z","repository":{"id":305000008,"uuid":"1021506436","full_name":"Kruthiksp/Java8","owner":"Kruthiksp","description":"A 100-day challenge to solve one Java 8 problem daily, starting from fundamentals and moving towards advanced use cases. This series covers Stream API, Lambda expressions, Collectors, Optional, and real-world functional programming patterns.","archived":false,"fork":false,"pushed_at":"2025-08-12T06:40:00.000Z","size":63,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-12T08:30:28.340Z","etag":null,"topics":["java8"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Kruthiksp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-17T13:54:49.000Z","updated_at":"2025-08-12T06:40:03.000Z","dependencies_parsed_at":"2025-07-17T21:54:41.504Z","dependency_job_id":"f17d22e7-1a2b-4b5d-b6de-004c978c4b10","html_url":"https://github.com/Kruthiksp/Java8","commit_stats":null,"previous_names":["kruthiksp/java8"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Kruthiksp/Java8","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kruthiksp%2FJava8","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kruthiksp%2FJava8/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kruthiksp%2FJava8/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kruthiksp%2FJava8/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kruthiksp","download_url":"https://codeload.github.com/Kruthiksp/Java8/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kruthiksp%2FJava8/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270183606,"owners_count":24541341,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-13T02:00:09.904Z","response_time":66,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java8"],"created_at":"2025-08-13T05:18:26.884Z","updated_at":"2025-10-24T12:32:12.203Z","avatar_url":"https://github.com/Kruthiksp.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Java8\nSolving one Java8 questions daily starting from very basic to advance covering all the features.\n\n\u003ch2\u003eDaily Problem Statements\u003c/h2\u003e\n\u003cpre\u003e\n01. Given a list of integers, use Java 8 Stream API to filter out the even numbers and collect them into a new list.\n02. Given a list of integers, use Java 8 Stream API and map() to square each number and collect the results into a new list.\n03. Given a list of integers,\n    Filter only the odd numbers\n    Square each of those odd numbers\n    Collect the result into a new list.\n04. Given a list of lowercase strings, use Java 8 Stream and map() to convert each string to uppercase and collect the result into a new list.\n05. Given a list of strings, sort them in ascending order of their lengths using Java 8 features.\n06. Given a list of Person Object,\n    Sort the list of Person objects by age in ascending order\n    Then by name in alphabetical order if ages are equal.\n07. Given a list of Product Object,\n    Filter the products that cost more than ₹1000\n    Collect the result into a new List\n    Print the filtered list.\n08. Given a list of Product Object,\n    Convert this list into a Map\u003cString, Double\u003e where\n        -\u003e Key = Product name\n        -\u003e Value = Product price\n    If the product names are duplicated\n        -\u003e Use  \"Merge Function\".\n09. Given a Map\u003cString, Integer\u003e representing products and their stock quantities\n    Filter products where the stock is less than 100.\n    Sort the result by stock quantity (ascending).\n    Collect into a new LinkedHashMap (to maintain sort order).\n    Print the result.\n10. Given a list of Transaction objects\n\tGroup the transactions by category\n\tFind the total amount spent in each category\n\tStore the result in a Map\u003cString, Double\u003e\n\tPrint the final grouped totals\n11. Given a list of Order objects.\n    Each order contains a list of Items.\n    create a List\u003cString\u003e containing the names of all items from all orders.\n12. Given a list of Department objects.\n    Each department has a name and a list of employees.\n    From the list of departments\n    -\u003e Extract names of employees who have a salary greater than ₹50,000\n    -\u003e Avoid duplicates (assume multiple departments can have employees with the same name).\n    -\u003e Sort the names alphabetically.\n    -\u003e Collect into a List\u003cString\u003e.\n13. You are given a list of Department objects. Each Department has a list of Employee objects.\n\tGet a Map where:\n\t\tKey: Department name\n\t\tValue: List of names of employees in that department who earn more than ₹60,000\n\tThe employee names should be sorted alphabetically.\n14. You are given a list of Order objects.\n    Flatten all items from all orders\n\tGroup the items by their name\n\tCalculate the total price for each item name\n\tStore the result in a Map\u003cString, Double\u003e where key = item name, value = total price\n15. Given a list of Book objects, group the books by author and then collect the book titles (as a list) for each author.\n16. You are given a list of Department objects. \n        Each department has a name and a list of Employee objects.\n        Each employee has a name, department, and salary\n    From all employees in all departments:\n        Group employees by department name.\n        For each department, find the highest-paid employee.\n        Return a Map\u003cString, Employee\u003e where key is department name, and value is the highest-paid employee of that department.\t\n17. You are given a list of Transaction objects.\n    Each transaction has: category, paymentMethod, amount.\n        Group the transactions by category.\n        Then group each category’s transactions by paymentMethod.\n        Sum the total amount spent per payment method per category.\n18. You are given a list of Product objects,\n\tEach with a name and a price.(Some products may have the same name but different prices.)\n    Group the products into a Map\u003cString, Double\u003e where \n        key -\u003e product name\n        value -\u003e average price for that product name.\n19. You are given a list of Order objects. Each Order contains a list of Items.\n    Generate a Map\u003cString, Double\u003e where:\n        key -\u003e item name\n        value -\u003e total revenue generated by that item(price*quantity)\n20. You are given a list of Department objects. Each department has a name and a list of Employee objects. Each employee has a name and salary.\t\n\tFind the department name that has the highest average salary.\n21. You are given a list of Order objects. Each Order contains a list of Items.\n    Compute the total quantity sold for each item category across all orders.\n22. Given a list of Student objects, each having:\n    Group the students by gradeLevel, and within each grade, group them by subject, and calculate the average marks for each subject.\n23. You have a list of Transaction objects:\n    create a map where:\n        Key -\u003e City name\n        Value -\u003e List of transaction types in that city where the total amount is greater than 1000\n24. Given a list of employees, find the average salary for each gender per department.\n25. Given a List of Order Objects\n    -\u003e From a given List\u003cOrder\u003e, group the orders by city,\n    -\u003e Inside each city, further group by category,\n    -\u003e For each category, calculate the total sales amount,\n    -\u003e Sort the categories in descending order of sales within each city.\n26. Given a List of Transaction Objects\n    -\u003e Filter transactions that happened in 2023 only.\n    -\u003e Group these transactions by city.\n    -\u003e For each city, find the transaction with the maximum amount.\n    -\u003e Finally, sort the result by the highest transaction amount (descending order).\n27. Given a list of Employee objects.\n    -\u003e Group employees by city and then by department.\n    -\u003e For each department in each city, find the average salary.\n    -\u003e Sort the departments in descending order of their overall average salary.\n28. Given a List of Product Objects\n    -\u003e Group the products by category.\n    -\u003e For each category, find the product with the highest rating.\n    -\u003e Sort the categories by average price (descending).\n29. Given a list of Employee objects\n    -\u003e Find the average salary of employees for each department.\n    -\u003e For each department, find the highest-paid employee.\n    -\u003e Sort the departments by average salary in descending order and collect the result in a LinkedHashMap where\n        -\u003e key = department\n        -\u003e value = a Map.Entry\u003cDouble, Employee\u003e (average salary, top employee).\n30. given a list of Book objects\n    Group the books by genre.\n    For each genre:\n        Find the average price of books.\n        Find the most recently published book.\n    Sort the genres by average price in descending order\n31. Given a List of Movie Objects.\n    Group movies by genre.\n    For each genre, calculate the average rating.\n    Find the highest-rated movie in each genre.\n    Sort genres by their average rating (descending) and display results in the format:\n    \tGenre -\u003e Average Rating | Top Movie Title\n32. Given a List of Employee Objects.\n    Partition employees into two groups:\n    \t-\u003e Those who joined before 2018\n    \t-\u003e Those who joined in or after 2018\n    For each partition, collect the names of employees as a comma-separated string.\n33. Given a list of Order objects \n    Group orders by city\n    For each city, calculate the total delivered amount (status = \"DELIVERED\").\n    From those, find the city with the maximum delivered amount.\n34. Given list of Order Objects\n    Consider only the orders with status = \"DELIVERED\".\n    For each city, find the category that has the highest total sales amount.\n    Print results like\n    city -\u003e category (Total amount)\n35. Given a list of Student objects\n\tGroup students by their department.\n\tFor each department, find the average GPA.\n\tAlso, find the top student (highest GPA) in each department.\n\tFinally, sort the departments by average GPA (descending order) and print:\n\t\tDepartment -\u003e Average GPA | Top Student\n36. Given a list of Transaction objects, \n    Group them by customerName and find:\n    Total transaction amount per customer.\n    Highest transaction per customer.\n    Print customers sorted by their total transaction amount (descending), along with their highest transaction.\n37. Given a list of Employee objects\n\tGroup employees by department and find the total salary per department.\n\tFrom each department, find the employee with the lowest salary.\n\tPrint departments sorted by total salary (descending) along with the employee having the lowest salary in that department.\n38. Given a list of Transaction objects\n    Find the total amount of all CREDIT transactions.\n    Get the list of transactions greater than 1000.\n    Find the transaction with the maximum amount.\n39. Given a list of integers\n    -\u003e Use a Predicate to filter and print only even numbers.\n    -\u003e Use a Function to square each number and collect results into a new list.\n    -\u003e Use a Consumer to print each element of the squared list.\n    -\u003e Use a Supplier to generate a random number between 1–100.\n40. Use Predicate to filter employees whose names:\n    -\u003e Start with \"A\" or \"D\".\n    -\u003e And have length greater than 3.\n    Use Function chaining to:\n    -\u003e Convert each name to uppercase.\n    -\u003e Then append \" - Employee\".\n    Use Consumer chaining to print each processed name in two ways:\n    -\u003e First just print the name.\n    -\u003e Then print \"Processed: \u003cname\u003e\".\n41. Given a list of numbers:\n    -\u003e Use a static method reference to check if a number is even.\n    -\u003e Use an instance method reference to print each number.\n    -\u003e Use a constructor reference to convert the list of strings into a list of Employee objects.\n42. Given a method:\n    -\u003e Wrap the result of getEmailByUsername() in an Optional.\n    -\u003e Print the email if present, otherwise print \"Email not found\".\n    -\u003e Use orElseGet() to return a default email (\"default@example.com\").\n    -\u003e Use map() to transform the email to uppercase if it exists.\n43. Given a list of employees:\n    -\u003e For each employee, safely get their email using Optional.ofNullable().\n        If email is missing, return \"no-email@company.com\".\n    -\u003e Find the first employee whose email starts with \"c\" (case-insensitive).\n        Use stream + findFirst() which returns Optional\u003cEmployee\u003e.\n        If found, print their email in uppercase, otherwise \"No employee found\".\n    -\u003e Count how many employees actually have an email (non-null).\n44. Given a List of User Objects:\n    -\u003e Safely get the city name of a user\n        If city not present, return \"City not available\".\n    -\u003e Exttract all the cities ignoring the null ones.\n    -\u003e Print the first city that starts with \"B\", or \"No city found\".\n45. Given a List of Employee Objects.\n    -\u003e Group employees by department\n    -\u003e Find the average salary of each department.\n    -\u003e Partition employees into high earners (salary \u003e 50,000) and others.\n46. Given a list of transactions:\n    -\u003e Find the total amount of all transactions using Collectors.reducing.\n    -\u003e Find the transaction with the maximum amount.\n    -\u003e Use Collectors.summarizingDouble to get count, sum, min, average, and max of transaction amounts.\n47. Given a list of Integers.\n    -\u003e Calculate the sum using a sequential stream and measure execution time.\n    -\u003e Calculate the sum using a parallel stream and measure execution time.\n    -\u003e Compare performance and explain when parallel streams are beneficial.\n48. Given a List of Integer.\n    -\u003e Find all prime numbers from the list.\n    -\u003e Use both sequential stream and parallel stream to process, and compare their performance.\n    -\u003e Print the time taken for each.\n49. Generate all prime numbers up to N\n    -\u003e Collect the primes into a List.\n    -\u003e Print the total count of primes.\n    -\u003e Print the first 20 primes as a sample.\n    -\u003e Compare execution time with your Day 48 prime-check approach.\n50. Given a List of Employee Objects.\n    -\u003e Group employees by department using Collectors.groupingBy.\n    -\u003e Find the average salary per department.\n    -\u003e Find the highest-paid employee per department.\n    -\u003e Collect all employee names into a comma-separated string.\n51. Given a List of Person Objects.\n    Partition people into 2 groups\n        -\u003e Minors \n        -\u003e Adults\n    Get IntSummaryStatistics for ages.\n    Collect all unique ages into a Set.\n52. Given a list of User Objects.\n    Extract all unique email addresses from the list of users using Streams + flatMap().\n    Print them in sorted order.\n53. Given a list of Transaction objects\n\tCalculate the total credited amount and total debited amount separately.\n\tFind the highest transaction amount.\n\tFind the user with the maximum total transaction amount (sum of all their transactions).\n\tCreate a comma-separated string of all unique transaction types.\n54. Find the first order with status = \"NEW\".\n\tFind any order with status = \"COMPLETED\".\n\tCalculate the total revenue from all COMPLETED orders.\n\tPartition orders into completed vs not completed using partitioningBy.\n55. Given a List of Transaction Objects.\n    Find Total Transaction Amount and Maximum Transaction using teeing.\n56. Given a List of Employee Objects.\n\tGroup employees by department.\n\tFor each department, compute:\n\t\t-\u003e The total salary.\n\t\t-\u003e The employee with the highest salary.\n\tReturn the result as a Map\u003cString, Map\u003cString, Object\u003e\u003e\n57. Given a list of products:\n\tGroup products by category.\n    For each category:\n        -\u003e Collect all product names into a comma-separated String (e.g., \"TV, Laptop, Phone\").\n        -\u003e Find the average price.\n    Return a Map\u003cString, Map\u003cString, Object\u003e\u003e like this\n58. Create Custom Collector to collect Department and its total salary into a Map\u003cString, Double\u003e\n59. Given a List of Order Objects.\n\tGroup orders by their status.\n\tFor each status, calculate:\n\t\t-\u003e Total Revenue (sum of amount)\n\t\t-\u003e List of unique customer names\n\t\t-\u003e List of all purchased items (flattened, no duplicates)\n\tReturn the result as a Map\u003cStatus, Map\u003cString, Object\u003e\u003e.\n60. Given a group of Employee Objects.\n\tGroup employees by department and within each department:\n\t\t-\u003e Find the highest paid employee.\n\t\t-\u003e Find the average salary.\n\t\t-\u003e Find the most experienced employee.\n\tCollect the result in a Map\u003cString, Map\u003cString, Object\u003e\u003e, where:\n\t\t-\u003e Key = Department name\n\t\t-\u003e Value = Map with keys \"highestPaid\", \"averageSalary\", \"mostExperienced\".\n61. Given a List of Employee Objects.\n    Partition employees into two groups:\n\t\t-\u003e Experienced (experience \u003e= 5 years)\n\t\t-\u003e Less Experienced (experience \u003c 5 years)\n\tFor each partition, calculate two things at once (use teeing):\n\t\t-\u003e Total Salary\n\t\t-\u003e Highest Paid Employee\n\tReturn a Map\u003cBoolean, Map\u003cString, Object\u003e\u003e.\n62. Given a List of Employee Object.\n    Write a Java 8 program that groups employees by their city and, for each city, calculates:\n\t\t-\u003e Average salary\n\t\t-\u003e List of distinct departments\n\t\t-\u003e The name of the most experienced employee in that city\n\tReturn the result as a Map\u003cString, CityReport\u003e where CityReport is a custom class (or record) that holds:\n\t\t-\u003e double avgSalary -\u003e Set\u003cString\u003e departments -\u003e Employee mostExperiencedEmp\n63. Given a List of Transaction Objects:\n    Group transactions by city, and for each city:\n\t-\u003e Calculate the total amount spent\n\t-\u003e Find the highest transaction (by amount)\n\t-\u003e Collect the distinct types of transactions.\n64. Given a List of Order Objects.\n\tGroup the orders by city, and for each city:\n\t-\u003e Find the total order amount.\n\t-\u003e Find the average order amount per category (nested grouping by category).\n\t-\u003e Find the highest order (max by amount).\n65. Given a List of Customer Objects.\n\ttotalRevenue -\u003e Sum of all amount for \"DELIVERED\" orders.\n\ttopCustomer -\u003e Customer who spent the most (only \"DELIVERED\" orders count).\n\torderStatuses -\u003e A Set\u003cString\u003e containing all distinct order statuses found in that city.\n66. Given a List of Customer Objects.\n\tTotal revenue (sum of all orders in that city).\n\tTop customer (the customer who spent the most in that city).\n\tDistinct product list bought in that city.\n\t\tReturn the result as a Map\u003cString, Map\u003cString, Object\u003e\u003e where:\n\t\tkey = city\n\t\tvalue = { totalRevenue, topCustomer, products }\n67. Given a List of Employee Objects.\n    -\u003e Generate a report grouped by department\n  \t-\u003e Average salary\n\t-\u003e Most experienced employee\n\t-\u003e Highest paid employee\n\t-\u003e Number of employees per city\n\tAnd collect the result as Map\u003cString, DepartmentReport\u003e\n68. Given a List of Order Objects For each city, generate a report containing:\n\t-\u003e Total revenue from COMPLETED orders.\n\t-\u003e Top 2 customers by total spending in that city.\n\t-\u003e Distinct set of products purchased in that city.\n\t-\u003e Order status breakdown -\u003e count of orders per status.\n69. Given a List of Projects Object\n  \tGenerate a DomainReport for each domain containing:\n    -\u003e Total budget allocated to that domain\n    -\u003e Average budget per project\n    -\u003e Project with the maximum budget\n    -\u003e Unique team members working in that domain.\n70. Given a List of Invoice Objects.\n  \tgenerate a report grouped by category that includes:\n\t\t-\u003e Total Revenue for each category\n\t\t-\u003e Average Invoice Amount per category\n\t\t-\u003e Top Customer (customer who spent the most in that category)\n\t\t-\u003e Monthly Breakdown (Map of Month -\u003e Total Amount)\n71. Given a List of Employee Objects\n    Group employees by department.\n\tFor each department, find the highest-paid employee.\n\tCollect the results into a Map\u003cString, Employee\u003e where:\n\t\tkey = department\n\t\tvalue = highest-paid employee.\n72. Given a List of Transaction Objects\n  \tCalculate the total credit amount.\n\tCalculate the total debit amount.\n\tFind the transaction with the maximum amount.\n\tPartition the transactions into credit and debit groups using Collectors.partitioningBy.\n73. Given a List of Order Objects.\n   \tFind all unique items bought across all orders (flatten items).\n\tCount how many times each item was bought (frequency).\n\tFind the customer who spent the maximum total amount (group by customer and sum).\n\tReturn a Map\u003cString, Object\u003e\n74. Given a List of Student Objects.\n\tFind the average marks of each department.\n\tFind the student with the highest marks overall.\n\tCreate a Map\u003cString, List\u003cString\u003e\u003e -\u003e where key = department, value = list of student names sorted by marks (descending).\n75. Given a List of Product Objects.\n    Group products by category. Within each category,\n\t-\u003e find the average price.\n\t-\u003e find the highest-rated product.\n76. Given a List of Integers.\n    Collect them as a ';' separated String.\n    using Custom collector.\n77. Given a stream of integers,\n    Create a custom collector that,\n    Produces a result containing both the sum and the average in a single pass.\n78. Create a custom collector that takes a stream of strings and\n    groups them by their first character,\n    while also counting how many words fall into each group.\n79. Write a custom collector that takes a Stream\u003cInteger\u003e and returns a Map\u003cString, Double\u003e with the following keys:\n\t\"positiveSum\" -\u003e Sum of all positive numbers\n\t\"negativeSum\" -\u003e Sum of all negative numbers\n\t\"average\" -\u003e Average of all numbers (positive + negative)\n80. Create a custom collector that takes a Stream\u003cString\u003e and collects it into a Map\u003cInteger, List\u003cString\u003e\u003e\n    The key is the length of the string.\n    The value is a list of all strings with that length.\n81. Custom Collector (Intermediate - Grouping + Statistics)\n\tCreate a custom collector that takes a stream of Product objects and returns a Map\u003cString, Map\u003cString, Object\u003e\u003e, where:\n\tThe outer map's key is the product's category.\n\tThe inner map contains:\n\t\t\"totalProducts\" -\u003e total number of products in that category\n\t\t\"totalPrice\" -\u003e sum of all product prices in that category\n\t\t\"averagePrice\" -\u003e average price of products in that category\n\t\t\"maxPriceProduct\" -\u003e product with the highest price in that category\n82. Create a custom collector that takes a stream of Product objects and returns a Map\u003cString, List\u003cProduct\u003e\u003e,\n    where:\n\tkey -\u003e category of the product.\n\tvalue -\u003e list of only those products whose rating \u003e= 4.5, And Sorted the values by price descending.\n83. Create a custom collector that takes a stream of Product objects and groups them by category, while also computing three statistics per category:\n\tTotal number of products, Total price, Average rating\n\tFinally, return a Map\u003cString, Map\u003cString, Object\u003e\u003e with category as the key and the inner map containing these 3 statistics.\n84. Create a custom collector that takes a stream of String values and collects them into a Map\u003cCharacter, String\u003e\n\twhere:\n\tkey -\u003e first character of the string.\n\tvalue -\u003e comma-separated string containing all words that start with that character.\n85. Create a custom collector that takes a stream of Product objects and collects them into a\n\tMap\u003cString, Map\u003cString, Object\u003e\u003e, where:\n\tOuter Map key -\u003e Category of the product\n\tInner Map should contain:\n\t\t\"totalPrice\" -\u003e sum of prices of products in that category\n\t\t\"averagePrice\" -\u003e average price in that category\n\t\t\"productNames\" -\u003e comma-separated string of product names in that category (in insertion order)\n86. Create a custom collector that takes a stream of Product objects and returns a\n\tMap\u003cString, Product\u003e, where:\n\tkey -\u003e product's category\n\tvalue -\u003e product with the highest rating in that category\n87. Write a custom collector that collects a stream of strings into a Map\u003cInteger, List\u003cString\u003e\u003e,\n\twhere: key -\u003e length of the string\n\t    value -\u003e list of all strings of that length, sorted in alphabetical order.\n88. Given a list of Product objects, Group products by category and produce a Map\u003cString, Map\u003cString, Object\u003e\u003e \n\twhere:\n\t\"minPrice\" -\u003e minimum price in the category\n\t\"maxPrice\" -\u003e maximum price in the category\n\t\"averageRating\" -\u003e average rating of all products in the category\n89. Given a list of Product objects, group them by category and then for each category,\n    Find the product with the highest rating,\n    Collect all the product names in that category into a comma-separated string,\n    Calculate the total number of products in that category.\n90. Given a list of Order objects, each Order has List\u003cItem\u003e\n    Group them by customer name and\n    Compute totalSpent, uniqueItems, orderCount\n91. Given a List of Employee Objects.\n\tGroup employees by department and extract top 3 highest paid employees in each department.\n\tsorted in descending order of salary.\n92. Given a List of Product Objects.\n\tcreate a Map\u003cString, String\u003e, where\n\tkey = category \n    value = comma-separated names of all products in that category.\n93. Given a List\u003cString\u003e words,\n    Return a Set\u003cString\u003e containing only duplicate elements (case-sensitive) using streams.\n94. Given a String, Return a Map\u003cCharacter, Long\u003e that counts occurrences of each character (ignore case and spaces).\n95. Given a List of Order Objects where each Order has orderId, customerName, and List\u003cItem\u003e (with price, quantity):\n\tProduce a Map\u003cString, Object\u003e containing:\n\t\"totalOrders\" = total number of orders\n\t\"totalRevenue\" = sum of price * quantity of all items\n\t\"uniqueCustomers\" = count of distinct customers\n96. Given a list of words, Return a Map\u003cInteger, List\u003cString\u003e\u003e where:\n    key = length,\n    value = sorted list of words with that length.\n97. Given a list of Product objects, Return a Map\u003cString, Product\u003e where\n    key = category\n    value = product with max price in that category.\n98. Given a list of Product with category and rating,\n\tReturn a Map\u003cString, Double\u003e containing average rating per category using Collectors.reducing (no averaging collector).\n99. Given List\u003cOrder\u003e each with List\u003cItem\u003e,\n    Flatten all items across orders and compute the total price (price * quantity) of all items.\n100. Given a list of Employee objects, find the N-th highest salary using stream API (no loops, no sorting twice).\n\u003c/pre\u003e\n\n\u003c!-- \u003ch2\u003eBonus Problem Statements\u003c/h2\u003e\n\u003cpre\u003e\n01. Given a list of Employee Objects,\n    Sort the list of Employee objects by department.\n02. Given a list of Product Objects,\n    find the product with Maximum price.\n03. Given a List\u003cStudent\u003e,\n\textract all unique course names (i.e., no duplicates).\n\tsort them alphabetically.\n\tCollect the result into a List\u003cString\u003e.\n04. Sort the resulting of Day_18 map by average price in descending order and \n    collect it into a LinkedHashMap to preserve that order?\n\u003c/pre\u003e --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkruthiksp%2Fjava8","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkruthiksp%2Fjava8","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkruthiksp%2Fjava8/lists"}