Colecta del flujo entrySet a LinkedHashMap

Xtra:

Quiero recoger la corriente a una LinkedHashMap<String, Object>.

Tengo un JSONrecurso que se almacena en LinkedHashMap<String, Object> resources. Luego filtro los JSONelementos de transmisión de la EntrySetde este mapa. Actualmente estoy recogiendo los elementos de corriente a un habitual HashMap. Pero después de esto, añado otros elementos en el mapa. Quiero que estos elementos estén en el orden insertado.

final List<String> keys = Arrays.asList("status", "createdDate");

Map<String, Object> result = resources.entrySet()
        .stream()
        .filter(e -> keys.contains(e.getKey()))
        .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

result.put("date", "someDate");
return result;

Es por eso que quiero para recoger la corriente a una LinkedHashMap<String, Object>. ¿Cómo puedo conseguir esto?

Amin:

Usted puede hacer esto con Stream:

Map<String, Object> result = resources.entrySet()
            .stream()
            .filter(e -> keys.contains(e.getKey()))
            .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (x, y) -> y, LinkedHashMap::new));

La parte (x, y) -> yes debido a mergeFunction cuando se encuentre duplicados de las llaves, se devuelve el valor de la segunda llave que encontró. la parte vuelta es MapFactory cuales un proveedor de proporcionar un nuevo mapa vacío en la que se insertarán los resultados.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=182709&siteId=1
Recomendado
Clasificación