Acoplar mapa <Cadena, establecer <String>> en Lista <String> (conversión CSV) con secuencias

Lo que posiblemente podría estar buscando es usar flatMap con una especie de valores ajustados para comparar valores enteros convertidos como:

return map.entrySet().stream()
        .flatMap(e -> e.getValue().stream()
                .sorted(Comparator.comparingInt(Integer::parseInt)) // or just .sorted()
                .map(v -> e.getKey() + "," + v))
        .collect(Collectors.toList());
Respuesta 1

Para mantener esto legible, lo mejor es dividir el código en dos métodos, solo para no alinear la flatMaplógica:

public List<String> toPairs(Map<String, Set<String> map) {
    return map.entrySet().stream()
        .flatMap(this::entryPairs)
        .sorted() // if you want the whole output to be sorted
        .collect(Collectors.toList())
}

private Stream<String> entryPairs(Map.Entry<String, Set<String>> entry) {
    return entry.getValue().stream()
        // .sorted() // you can sort the values for each key here, but this is useless if you're sorting above
        .map(v -> entry.getKey() + ',' + v)
}
Respuesta: 2

Tengo un problema al intentar implementar una comprobación de seguridad en Java Security Manager. Parece que he entendido mal el propósito del método checkExec () en el administrador de seguridad. Pensé que sería ...

Hola, estoy escribiendo una prueba unitaria donde necesito afirmar que una lista contiene objetos de varias clases en un orden específico. Quiero hacer esto usando hamcrest. En este momento lo estoy afirmando como ...

He creado una imagen de máquina que tiene algunos lenguajes / frameworks instalados, por ejemplo, Java, Ruby, etc. La idea es que puedo inicializar rápidamente una nueva máquina virtual (por ejemplo, en Amazon EC2 o ...

Tengo un conjunto de datos como este: + --- + ------------------- + ------------------ ----- + | id | tiempo | rango | + --- + ------------------- + ----------------------- + | id1 | 2019-03-11 05:00: ...