import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static java.util.Map.entry;

public final class Main {

    private static final Map<String, Runnable> COMMAND_MAP = Map.ofEntries(
            entry("help", () -> printHelp()),
            entry("quit", () -> exitProgram()),
            entry("shutdown", () -> shutdownSystem()));

    private static void printHelp() {
        System.out.println("printHelp");
    }

    private static void exitProgram() {
        System.out.println("exitProgram");
    }

    private static void shutdownSystem() {
        System.out.println("shutdownSystem");
    }

    private static List<String> getCommandList() {
        return List.of("help", "reboot", "shutdown");
    }

    private static void fixMe() {
        var list = getCommandList().stream()
            // Defers disposition of 'null' when 'Map#get(Object)' returns
            // 'null'
            .map(COMMAND_MAP::get)
            // The next statement is equivalent to '.filter(Objects::nonNull)'
            .filter(r -> r != null)
            .collect(Collectors.toList());
        list.forEach(r -> r.run());
    }

    public static void main(String[] args) {
        fixMe();
    }
}
