Groovy Goodness: Collate a List into Sub-lists
Join the DZone community and get the full member experience.
Join For FreeI totally missed the new collate() method for List objects available since Groovy 1.8.6. With this method we can divide a list into sub-lists of a specified size. We can include a boolean parameter to indicate if we want to include remainders that don't fit in the specified size of the collated sub-lists. Finally we can use a parameter to define how many steps we go through the list before dividing the list into sub-lists.
def letters = 'a'..'g' assert letters.collate(3) == [['a', 'b', 'c'], ['d', 'e', 'f'], ['g']] // Step through original list with // 2 steps and collate. assert letters.collate(3, 2) == [['a', 'b', 'c'], ['c', 'd', 'e'], ['e', 'f', 'g'], ['g']] // Don't include remainder in result. // Default a remainder is included in the result. boolean remainder = false assert letters.collate(3, remainder) == [['a', 'b', 'c'], ['d', 'e', 'f']] assert letters.collate(3, 2, remainder) == [['a', 'b', 'c'], ['c', 'd', 'e'], ['e', 'f', 'g']]
Published at DZone with permission of Hubert Klein Ikkink, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments