Groovy将列表List转换为Map

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

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

示例测试数据

  1. @ToString
  2. class Bike {
  3. def name
  4. def brand
  5. public Bike(String name, String brand) {
  6. this.name = name
  7. this.brand = brand
  8. }
  9. }
  10. def bikes
  11. @Before
  12. void before() {
  13. bikes = [
  14. new Bike("SuperFly", "Trek"),
  15. new Bike("X-Caliber", "Trek"),
  16. new Bike("Big Daddy", "Huffy"),
  17. new Bike("CranBrook", "Huffy"),
  18. ]
  19. }

将对象列表转换为Map

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

  1. @Test
  2. void convert_list_of_objects_to_map() {
  3. def bikeMap = bikes.collectEntries {
  4. b -> [b.name, b.brand]
  5. }
  6. assert 4 == bikeMap.size()
  7. assert 'Trek' == bikeMap['SuperFly']
  8. }

输出

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

使用SpreadMap将列表转换成Map

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

  1. @Test
  2. void convert_list_of_strings_to_map() {
  3. def list = [
  4. 'green bay',
  5. 'packers',
  6. 'cincinnati',
  7. 'bengals'] as Object[]
  8. def map = list.toSpreadMap()
  9. assert 2 == map.size()
  10. assert 'packers' == map['green bay']
  11. }

输出

  1. [green bay:packers, cincinnati:bengals]

相关文章