How to groupBy an iterator without converting it to list in scala?

后端 未结 3 1122
清酒与你
清酒与你 2021-01-19 03:26

Suppose I want to groupBy on a iterator, compiler asks to \"value groupBy is not a member of Iterator[Int]\". One way would be to convert iterator

3条回答
  •  孤城傲影
    2021-01-19 03:52

    I don't think this is doable without storing results in memory (and in this case switching to a list would be much easier). Iterator implies that you can make only one pass over the whole collection.

    For instance let's say you have a sequence 1 2 3 4 5 6 and you want to groupBy odd an even numbers:

    groupBy(it, v => v % 2 == 0)
    

    Then you could query the result with either true and false to get an iterator. The problem should you loop one of those two iterators till the end you couldn't do the same thing for the other one (as you cannot reset an iterator in Scala).

    This would be doable should the elements were sorted according to the same rule you're using in groupBy.

提交回复
热议问题