Cómo filtrar un hashmap con condiciones específicas
Tengo el siguiente hashmap inicial:
LatS=[59, 48, 59, 12, 48]
LatD=[41, 42, 46, 42]
EW=[W, W, W, W]
NS=[N, N, N, N]
LonM=[39, 23, 30, 48]
State=[OH, SD, WA, MA]
LatM=[5, 52, 35, 16]
City=[Youngstown, Yankton, Yakima, Worcester]
LonS=[0, 23, 36, 0]
LonD=[80, 97, 120, 71]
Quiero filtrar el Hashmap usando el método query que tiene la siguiente llamada:
HashMap<object,></object,>
La definición de la función es:
public HashMap<object,></object,>
HashMap<object,></object,><object>> ref = new HashMap<>(frameInfo);
Map<object,></object,><object>> result = ref.entrySet()
.stream()
.filter(cond)
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
System.out.println("Resultado: " + result);
Pero la parte más difícil es obtener el hashmap result de una manera específica. Solo quiero las columnas de la ciudad pasada como parámetro.
Por ejemplo: si uso este argumento:
HashMap<object,></object,>
la salida debería ser:
LatS=[59]
LatD=[41]
EW=[W]
NS=[N]
LonM=[N]
State=[OH]
LatM=[5]
City=[Youngstown]
LonS=[0]
Lond=[80]
¡Muchas gracias!
davy.ai
Para obtener la salida deseada, puedes modificar el método
query
para filtrar primero las filas basadas en la condición dada y luego crear un nuevo hashmap que contenga solo las columnas de la ciudad pasada como parámetro. Aquí tienes una posible implementación:Luego puedes llamar a este método con la ciudad deseada de la siguiente manera:
Y debería producir la salida que deseabas:
LatS=[59]
LatD=[41]
EW=[W]
NS=[N]
LonM=[39]
State=[OH]
LatM=[5]
City=[Youngstown]
LonS=[0]
LonD=[80]