La libreria Scala Collection ha mapValues
e filterKeys
. Il motivo per cui non ha mapKeys
è probabile l'aspetto prestazionale (per quanto riguarda HashMap
implementazione), come discusso qui per Haskell: Why there's not mapKeys in Data.Hashmap?Perché nessuna mapKey in Scala?
Tuttavia.
implicazioni sulle prestazioni a parte, mi trovo a dover mapKeys
almeno tanto quanto mapValues
, semplicemente per massaggiare i dati (vale a dire che sto utilizzando una mappa per l'astrazione dei dati, non per il suo prendere velocità).
Mi sbaglio e quale modello di dati utilizzeresti per questo? Le tuple?
Se la mappatura delle chiavi produce una collisione, quale dei valori ci si aspetta di trovare nella nuova mappa? Il primo, l'ultimo o la raccolta di tutti i valori con la stessa chiave? –
Buon punto. Nel mio caso non garantirei alcuna collisione, ma ciò dimostra quanto bisogna considerare nella progettazione delle librerie di raccolta. – akauppi
@LeifWickland, lo stesso accade quando si esegue il mapping su un 'Set' in Scala: potrebbe ridursi. –