Saltar al contenido

dividir la cadena y almacenarla en HashMap java 8

Solución:

A no ser que Splitter está haciendo algo de magia, el getTokenizeString El método es obsoleto aquí. Puede realizar todo el procesamiento como una sola operación:

Map<String,String> map = Pattern.compile("\s*-\s*")
    .splitAsStream(responseString.trim())
    .map(s -> s.split("~", 2))
    .collect(Collectors.toMap(a -> a[0], a -> a.length>1? a[1]: ""));

Usando la expresión regular s*-s* como separador, está considerando el espacio en blanco como parte del separador, por lo que recorta implícitamente las entradas. Solo hay una inicial trim operación antes de procesar las entradas, para asegurarse de que no haya espacios en blanco antes de la primera o después de la última entrada.

Luego, simplemente divida las entradas en un map paso antes de reunirse en un Map.

En primer lugar, no tienes que dividir lo mismo String dos veces.
En segundo lugar, verifique la longitud de la matriz para determinar si hay un valor presente para una clave determinada.

HashMap<String, String> map= 
    list.stream()
        .map(s -> s.split("~"))
        .collect(Collectors.toMap(a -> a[0], a -> a.length > 1 ? a[1] : ""));

Esto es asumiendo que quiere poner la clave con un null valor si una clave no tiene un valor correspondiente.

O puedes saltarte el list variable :

HashMap<String, String> map1 = 
    MyClass.getTokenizeString(responseString, "-")
        .stream()
        .map(s -> s.split("~"))
        .collect(Collectors.toMap(a -> a[0], a -> a.length > 1 ? a[1] : ""));
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *