Skip to content

Instantly share code, notes, and snippets.

@TGITS
Created June 7, 2020 15:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save TGITS/092f86b9f9df42107b3ab84308535275 to your computer and use it in GitHub Desktop.
Save TGITS/092f86b9f9df42107b3ab84308535275 to your computer and use it in GitHub Desktop.
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
import static java.lang.System.out;
import static java.util.stream.Collectors.summingInt;
public class Main {
public static void main(String[] args) {
List<String> characters = List.of("A", "B", "C", "A", "D", "A", "C");
out.println("Séquence de caractères pour lequel il faut établir le tableau de fréquences : " + characters);
out.println("Tableau de fréquences créé en mode impératif avec des longs : " + createFrequencyMapOldSchool(characters));
out.println("Tableau de fréquences déterminé avec l'API Streams avec des longs: " + createFrequencyMapWithStreams(characters));
out.println("Tableau de fréquences créé en mode impératif avec des ints : " + createFrequencyMapOldSchoolWithInts(characters));
out.println("Tableau de fréquences déterminé avec l'API Streams avec des longs: " + createFrequencyMapWithStreamsAndInts(characters));
}
private static <T> Map<T, Long> createFrequencyMapOldSchool(List<T> elements) {
Map<T, Long> frequency = new HashMap<>();
for (T element : elements) {
long previousCount = 0L;
if (frequency.get(element) != null)
previousCount = frequency.get(element);
frequency.put(element, previousCount + 1);
}
return frequency;
}
private static <T> Map<T, Long> createFrequencyMapWithStreams(List<T> elements) {
return elements.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
}
private static <T> Map<T, Integer> createFrequencyMapOldSchoolWithInts(List<T> elements) {
Map<T, Integer> frequency = new HashMap<>();
for (T element : elements) {
int previousCount = 0;
if (frequency.get(element) != null)
previousCount = frequency.get(element);
frequency.put(element, previousCount + 1);
}
return frequency;
}
private static <T> Map<T, Integer> createFrequencyMapWithStreamsAndInts(List<T> elements) {
return elements.stream().collect(Collectors.groupingBy(Function.identity(), summingInt(element -> 1)));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment