scala - Unzip a sequence of case classes with two fields -


let's have case class mycaseclass 2 fields in constructor, , sequence of values of case class, sequence.

how unzip sequence?

if fields a , b i'd write

(sequence map (_.a), sequence map (_.b)) 

ok, traverse sequence twice, list traversal cheap, i'd wager quicker using option.get.

edit: after rex's comment, couldn't resist running benchmark myself; results below...

times in ms 100 traversals of 10000 elem collection,     l = list, = array, v = vector                                                // java 6           // java 7 sequence.unzip{case mycaseclass(a,b) => (a,b)} //l 173 101 v 87  //l 27 29 v 21 sequence.unzip{mycaseclass.unapply(_).get}     //l 194 116 v 100 //l 35 32 v 25 (sequence map (_.a), sequence map (_.b))       //l 177 70  v 86  //l 34 20 v 23 

your results may vary, according cpu, memory, jre version, collection size, phase of moon etc.


Comments