import java.util.List; import static java.util.Arrays.asList; import static java.util.Arrays.stream; enum Digit { ZERO(asList(" _ ", "| |", "|_|")), ONE(asList(" ", " |", " |")), TWO(asList(" _ ", " _|", "|_ ")), THREE(asList(" _ ", " _|", " _|")), FOUR(asList(" ", "|_|", " |")), FIVE(asList(" _ ", "|_ ", " _|")), SIX(asList(" _ ", "|_ ", "|_|")), SEVEN(asList(" _ ", " |", " |")), EIGHT(asList(" _ ", "|_|", "|_|")), NINE(asList(" _ ", "|_|", " _|")); private final List<String> ssdRepresentation; Digit(List<String> ssd) { this.ssdRepresentation = ssd; } static String fromSsdConfiguration(final List<String> ssdConfiguration) { return stream(values()) .filter(digit -> digit.ssdRepresentation.equals(ssdConfiguration)) .map(Digit::ordinal) .map(Object::toString) .findFirst() .orElse("?"); } }