From f3e685a23175aa23950e38259c59db54e14b1a4f Mon Sep 17 00:00:00 2001 From: vunamtien Date: Wed, 22 Mar 2023 03:44:57 +0700 Subject: [PATCH] BAEL-6168-find-most-frequent-elements-java-array (#13633) * BAEL-6168-find-most-frequent-elements-java-array * update method use stream --------- Co-authored-by: tienvn4 --- .../MostFrequentElementsFinder.java | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/algorithms-modules/algorithms-miscellaneous-7/src/main/java/com/baeldung/algorithms/frequentelements/MostFrequentElementsFinder.java b/algorithms-modules/algorithms-miscellaneous-7/src/main/java/com/baeldung/algorithms/frequentelements/MostFrequentElementsFinder.java index ea127ea587..0d78691bcc 100644 --- a/algorithms-modules/algorithms-miscellaneous-7/src/main/java/com/baeldung/algorithms/frequentelements/MostFrequentElementsFinder.java +++ b/algorithms-modules/algorithms-miscellaneous-7/src/main/java/com/baeldung/algorithms/frequentelements/MostFrequentElementsFinder.java @@ -30,22 +30,12 @@ public class MostFrequentElementsFinder { } public static List findByStream(Integer[] arr, int n) { - // Create a Map to count occurrences of each element - Map countMap = Arrays.stream(arr) - .collect(Collectors.groupingBy(i -> i, Collectors.counting())); - - // Sort the elements by occurrence count - List sortedKeys = countMap.entrySet().stream() + return Arrays.stream(arr).collect(Collectors.groupingBy(i -> i, Collectors.counting())) + .entrySet().stream() .sorted(Collections.reverseOrder(Map.Entry.comparingByValue())) .map(Map.Entry::getKey) + .limit(n) .collect(Collectors.toList()); - - // Extract the n most frequent elements from the sorted list - List result = new ArrayList<>(); - for (int i = 0; i < n && i < sortedKeys.size(); i++) { - result.add(sortedKeys.get(i)); - } - return result; } public static List findByTreeMap(Integer[] arr, int n) {