Convert list to map

This example will show how to transform a list to a map using groovy. In the set up we will create a Bike class while initializing a list of bikes which will be used in the first snippet. In a comparable example we demonstrate how to convert an arraylist to a map in java using java 8 and guava.


class Bike {

    def name
    def brand

    public Bike(String name, String brand) { = name
        this.brand = brand

def bikes

void before() {

    bikes = [
        new Bike("SuperFly", "Trek"),
        new Bike("X-Caliber", "Trek"),
        new Bike("Big Daddy", "Huffy"),
        new Bike("CranBrook", "Huffy"),

Convert list of objects to map

Using collectEntries we will iterate over the collection of bikes and transform each bike object in the list to a map entry using the bike name as the key and the brand as the value.

void convert_list_of_objects_to_map() {

    def bikeMap = bikes.collectEntries {
        b -> [, b.brand]
    assert 4 == bikeMap.size()
    assert 'Trek' == bikeMap['SuperFly']


[SuperFly:Trek, X-Caliber:Trek, Big Daddy:Huffy, CranBrook:Huffy]

List of strings to map

Using a SpreadMap we will convert a list of strings into a map. A SpreadMap is a helper that turns a list with an even number of elements into a Map. In the snippet below, we create a map keyed by NFL city while the value will be the team name.

void convert_list_of_strings_to_map() {

    def list = [
        'green bay',
        'bengals'] as Object[]

    def map = list.toSpreadMap()

    assert 2 == map.size()
    assert 'packers' == map['green bay']


[green bay:packers, cincinnati:bengals]