ho una serie di stringhe di input nel seguente formato:Java 8 groupingby con chiave personalizzata
typeA:code1,
typeA:code2,
typeA:code3,
typeB:code4,
typeB:code5,
typeB:code6,
typeC:code7,
...
e ho bisogno di ottenere un Map<String, List<String>>
con la seguente struttura:
typeA, [code1, code2, code3]
typeB, [code4, code5, code6]
typeC, [code7, code8, ...]
La cattura è che per generare ogni tipo devo chiamare una funzione come questo su ogni stringa di ingresso:
public static String getType(String code)
{
return code.split(":")[0]; // yes this is horrible code, it's just for the example, honestly
}
I' Sono piuttosto fiducioso che gli Stream e i Collector possono farlo, ma sto lottando per ottenere il giusto incantesimo di incantesimi per farlo accadere.
Grazie, questo è abbastanza vicino a quello che mi è venuto in mente. Mi sono reso conto che il tipo del primo parametro in groupingBy è un func, e che potrei usare la mia funzione getType lì. – endian