Difficile
Ce code
public class Numerals {
private static final NavigableMap<Integer, String> CONVERSIONS = buildConversions();
private Numerals() {}
public static String toRoman(int arabic) {
return highestKnownConversion(arabic).map(toRomanRepresentation(arabic)).orElse("");
}
private static Optional<Entry<Integer, String>> highestKnownConversion(int arabic) {
return Optional.ofNullable(CONVERSIONS.floorEntry(arabic));
}
private static Function<Entry<Integer, String>, String> toRomanRepresentation(int arabic) {
return conversion -> conversion.getValue() + toRoman(arabic - conversion.getKey());
}
private static NavigableMap<Integer, String> buildConversions() {
NavigableMap<Integer, String> conversions = new TreeMap<>();
conversions.put(1, "I");
conversions.put(4, "IV");
conversions.put(5, "V");
conversions.put(9, "IX");
conversions.put(10, "X");
return conversions;
}
}
Auteur: Clément DevosStatut : PubliéeQuestion passée 435 fois
Modifier
1
Évaluations de la communautéPersonne n'a encore évalué cette question, soyez le premier !
1
Code Java qui remplace les clés d'un template par leurs valeurs.1
Écrire une implémentation en Java du code kata FizzBuzz.4
Ce code permet de récupérer aléatoirement des nombres entre 1 et 31 dans les résultats. Il aurait fallu déclarer SimpleDateFormat dans le Thread.4
Écrire une fonction qui retourne le premier caractère d'une chaîne de caractères en Java1
Quelle fonctionnalité de Java 7 n'a été utilisable qu'en Java 8?1
Que signifie SRP ?1
Quel est le nom du design pattern utilisé pour structurer les applications complexes en considérant le domaine du problème ?