Esiste un modo migliore di convertire una matrice di stringhe sotto forma di "chiave: valore" in un Map
utilizzando la sintassi lambda Java 8?Converti array di stringhe in mappa utilizzando Java 8 espressioni Lambda
Arrays.asList("a:1.0", "b:2.0", "c:3.0")
.stream()
.map(elem -> elem.split(":")
.collect(Collectors.toMap(keyMapper?, valueMapper?));
La soluzione che ho in questo momento non sembra davvero funzionale:
Map<String, Double> kvs = new HashMap<>();
Arrays.asList("a:1.0", "b:2.0", "c:3.0")
.stream()
.map(elem -> elem.split(":"))
.forEach(elem -> kvs.put(elem[0], Double.parseDouble(elem[1])));
Non credo che ignorare in silenzio input errati sia un buon consiglio e questo non è stato richiesto dall'OP. Farò meglio a usare 'elem -> elem.split (": ", 2)' invece di aggiungere il passo 'filter'. In questo modo, l'input errato si manifesterà con 'ArrayIndexOutOfBoundsException' (se non è stato trovato alcun colon) o con' NumberFormatException' (se sono stati trovati più di due punti). –
Grazie per tutti i commenti e l'input aggiuntivo sul controllo degli errori. Questo è quello di cui avevo bisogno. – bsam
Se l'attività è di convertire un array * real * in Map, l'espressione dovrebbe iniziare con 'Arrays.stream ()' –