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 <tienvn4@ghtk.co>
This commit is contained in:
vunamtien 2023-03-22 03:44:57 +07:00 committed by GitHub
parent b2accf8773
commit f3e685a231
1 changed files with 3 additions and 13 deletions

View File

@ -30,22 +30,12 @@ public class MostFrequentElementsFinder {
} }
public static List<Integer> findByStream(Integer[] arr, int n) { public static List<Integer> findByStream(Integer[] arr, int n) {
// Create a Map to count occurrences of each element return Arrays.stream(arr).collect(Collectors.groupingBy(i -> i, Collectors.counting()))
Map<Integer, Long> countMap = Arrays.stream(arr) .entrySet().stream()
.collect(Collectors.groupingBy(i -> i, Collectors.counting()));
// Sort the elements by occurrence count
List<Integer> sortedKeys = countMap.entrySet().stream()
.sorted(Collections.reverseOrder(Map.Entry.comparingByValue())) .sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
.map(Map.Entry::getKey) .map(Map.Entry::getKey)
.limit(n)
.collect(Collectors.toList()); .collect(Collectors.toList());
// Extract the n most frequent elements from the sorted list
List<Integer> result = new ArrayList<>();
for (int i = 0; i < n && i < sortedKeys.size(); i++) {
result.add(sortedKeys.get(i));
}
return result;
} }
public static List<Integer> findByTreeMap(Integer[] arr, int n) { public static List<Integer> findByTreeMap(Integer[] arr, int n) {