groovy 将列表转换为地图

问题描述 投票:0回答:1

有这个绝妙的脚本

def projectDirectories = [
    "golang-base",
    "java-base",
    "cpp-base",
    "ubuntu-fips",
    "suse-base",
    "golang-base",
    "java-base",
    "cpp-base",
    "ubuntu-fips",
    "suse-base",
]
def partition(array, size) {
    def partitions = []
    int partitionCount = array.size() / size

    partitionCount.times { partitionNumber ->
        def start = partitionNumber * size
        def end = start + size - 1
        partitions << array[start..end]
    }

    if (array.size() % size) partitions << array[partitionCount * size..-1]
    return partitions
}

def results = partition(projectDirectories, 2)
assert results instanceof List
for(i=0;i<results.size();i++)
{
    def resultUUID = UUID.randomUUID()
                 .toString()
                 .split('-')[-1..-2]
                 .join()
                 .toUpperCase()
    println (i+":"+resultUUID);

}

它打印出这个结果

[0:0D0759825372ADC2]
[1:E0E191BDFFD9B882]
[2:1AC6086897BA9FFE]
[3:8F92F1C0B70697B9]
[4:EC0D5D755849A01A]

现在,如何转换成这样的地图: [0:0D0759825372ADC2,1:E0E191BDFFD9B882,2:1AC6086897BA9FFE,3:8F92F1C0B70697B9,4:EC0D5D755849A01A]

groovy jenkins-groovy
1个回答
0
投票

惯用的 Groovy 会说:

def results = 1..5 // or your list
int ix = 0
Map map = results.collectEntries{ [ ix++, UUID.randomUUID().toString().split('-')[-1..-2].join().toUpperCase() ] }

退货

{
  "0": "4182AA9581C88EA1",
  "1": "F57F19859C1F8794",
  "2": "399BBA447F53A99B",
  "3": "33CCE45D78A3BED5",
  "4": "9D4B2782D7E982AF"
}
© www.soinside.com 2019 - 2024. All rights reserved.