Groovy将列表List转换为Map

x33g5p2x  于2022-10-05 转载在 其他  
字(1.1k)|赞(0)|评价(0)|浏览(2552)

这个例子将展示如何使用groovy将一个列表转换为Map。在示例中,我们将创建一个自行车类,同时初始化一个自行车的列表,这将在第一个片段中使用。

示例测试数据

@ToString
class Bike {

    def name
    def brand

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

def bikes

@Before
void before() {

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

将对象列表转换为Map

使用collectEntries,我们将遍历自行车集合,并将列表中的每个自行车对象转换为Map,使用自行车名称作为键,品牌作为值。

@Test
void convert_list_of_objects_to_map() {

    def bikeMap = bikes.collectEntries {
        b -> [b.name, b.brand]
    }

    assert 4 == bikeMap.size()
    assert 'Trek' == bikeMap['SuperFly']
}

输出

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

使用SpreadMap将列表转换成Map

使用SpreadMap,我们将把一个字符串列表转换为Map。SpreadMap是一个辅助工具,它可以将一个具有偶数元素的列表变成一个Map。在下面的片段中,我们创建了一个以NFL城市为关键字的地图,而其值将是球队名称。

@Test
void convert_list_of_strings_to_map() {

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

    def map = list.toSpreadMap()

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

输出

[green bay:packers, cincinnati:bengals]

相关文章

微信公众号

最新文章

更多