voglio essere in grado di convertire un List
ad un HashMap
in cui la chiave è la elementName
ei valori è un elenco di qualcosa di casuale (in questo caso il suo nome dell'elemento). Quindi insomma voglio (A->List(A), B->List(B), C-> List(C)
). Ho provato a utilizzare toMap()
e passandolo a keyMapper
e ValueMapper
ma ottengo un errore di compilazione. Apprezzerei molto se qualcuno potesse aiutarmi.raccolta HashMap <String, Lista <String>> java 8
Grazie!
public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> list = Arrays.asList("A","B","C","D");
Map<String, List<String>> map = list.stream().map((element)->{
Map<String, List<String>> map = new HashMap<>();
map.put(element, Arrays.asList(element));
return map;
}).collect(??);
}
Function<Map<String, String>, String> key = (map) -> {
return map.keySet().stream().findFirst().get();
};
Function<Map<String, String>, String> value = (map) -> {
return map.values().stream().findFirst().get();
};
=== Questo ha funzionato per me
Grazie per tutto l'aiuto ragazzi! @izstas "dovrebbero operare sugli elementi" ha aiutato molto :). In realtà questo è quello che cercavo per l'esattezza
public static void test2(){
Function<Entry<String, List<String>>, String> key = (entry) -> {
return entry.getKey();
};
Function<Entry<String, List<String>>, List<String>> value = (entry) -> {
return new ArrayList<String>(entry.getValue());
};
BinaryOperator<List<String>> merge = (old, latest)->{
old.addAll(latest);
return old;
};
Map<String, List<String>> map1 = new HashMap<>();
map1.put("A", Arrays.asList("A1", "A2"));
map1.put("B", Arrays.asList("B1"));
map1.put("D", Arrays.asList("D1"));
Map<String, List<String>> map2 = new HashMap<>();
map2.put("C", Arrays.asList("C1","C2"));
map2.put("D", Arrays.asList("D2"));
Stream<Map<String, List<String>>> stream =Stream.of(map1, map2);
System.out.println(stream.flatMap((map)->{
return map.entrySet().stream();
}).collect(Collectors.toMap(key, value, merge)));
}
Qual è l'errore del compilatore? –
Pubblica il tuo codice sorgente, vedi [Come creare un esempio minimale, completo e verificabile] (http://stackoverflow.com/help/mcve) – DavidPostill
Non sono sicuro, ma per quanto ne so nella tua mappa parte qualsiasi cosa tu dal lato sinistro deve corrispondere con il lato destro, quindi dovresti restituire elemento non mappa penso :) –